Cli: ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ๋นˆ ํ•ญ๋ชฉ ์˜ค๋ฅ˜

์— ๋งŒ๋“  2019๋…„ 12์›” 18์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: npm/cli

๋ญ? ์™œ

์ด Heroku ๋นŒ๋“œ ํŒฉ์˜ ๋‹ค์Œ ์ค„์—์„œ npm prune ๋ฅผ ์‹คํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. https://github.com/gjaldon/heroku-buildpack-phoenix-static/blob/master/lib/build.sh#L137

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

npm ERR! invalid bin entry for package [email protected]. key=jsesc, value=bin/jsesc

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/samhstn/.npm/_logs/2019-12-18T17_08_55_527Z-debug.log

๋‹ค์Œ ๋””๋ฒ„๊ทธ ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. 2019-12-18T17_08_55_527Z-debug.log

์–ธ์ œ

์ด ์˜ค๋ฅ˜๋Š” node_modules ๊ฐ€์—†๋Š” ๊ฒฝ์šฐ npm prune ์‹คํ–‰ํ•  ๋•Œ๋งŒ ๋ฐœ์ƒํ•˜๋ฉฐ jsesc ๋ชจ๋“ˆ ์ด์ƒ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ npm prune ๋Š” node_modules ์„ค์น˜ํ•˜๋ฉด npm prune ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋””

์ด ์˜ค๋ฅ˜๋Š” Heroku ci์˜ ๊นจ๋—ํ•œ ๋นŒ๋“œ์™€ ๋‚ด osx ์ปดํ“จํ„ฐ์˜ ๋กœ์ปฌ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ

์ด ์ €์žฅ์†Œ ๋ณต์ œ์—์„œ : https://github.com/samhstn/invalid-bin-entry , ๋‹ค์Œ ์‹คํ–‰ :

cd assets
npm prune

์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑ


์•ž์œผ๋กœ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ์˜ค๋ฅ˜๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  npm prune ๋ช…๋ น์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Heroku ๋นŒ๋“œ ํŒฉ์„ ์–ป์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

Release 6.x patch

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

6.13.5๋Š” ๋‹ค์Œ ์ฃผ ํ™”์š”์ผ ์ธ 2019-01-07์— ์ถœ์‹œ ๋  ์˜ˆ์ •์ด๋ฉฐ,์ด ๋ฌธ์ œ์™€ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ pacote ๋ฐ bin-links ์—…๋ฐ์ดํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  16 ๋Œ“๊ธ€

ํŒจํ‚ค์ง• ์„ค์ •์— ์ƒˆ๋กญ๊ณ  ๋งค์šฐ ์œ ์‚ฌํ•˜๊ณ  ์„ค๋ช… ํ•  ์ˆ˜์—†๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ช…ํ™•ํžˆํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ๋‹ต๋ณ€์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํ•ฉ๋ฆฌ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์„ ์ˆ˜์žˆ๋Š” ๋ช‡ ์•ˆ๋˜๋Š” ๊ณณ ์ค‘ ํ•˜๋‚˜์˜€์Šต๋‹ˆ๋‹ค.

npm "์ž˜๋ชป๋œ ๋นˆ ํ•ญ๋ชฉ"

์ด๊ฒƒ์ด ์ตœ๊ทผ์˜ ๋ณ€ํ™” ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์˜์‹ฌํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค

NPM : v6.13.4์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„๋Š” OP์™€ ๋‹ค๋ฅด์ง€๋งŒ ๋น„์Šทํ•œ ์›์ธ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ:
npm ci && npm prune --production

์ด๊ฒƒ์€
error invalid bin entry for package

์‚ฌ์šฉ :
npm install && npm prune --production

๊ทธ๋Ÿฌ๋‚˜ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. npm install ๊ฐ€ ์ ํ•ฉํ•˜๋‹ค๊ณ  ํŒ๋‹จ ๋  ๋•Œ๋งˆ๋‹ค package-lock / package.json์„ ํ„ฐ์น˜ํ•˜๊ณ  ์ž ์žฌ์ ์œผ๋กœ์ด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ๊ธฐ์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹ค์‹œ ์ถ”์ ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/npm/bin-links/commit/25a34f905a0144cebcd41e56b6942117b267e005#diff -168726dbe96b3ce427e7fedce31bb0bcR85

v6.13.3 npm ๋ฆด๋ฆฌ์Šค์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ง€๊ธˆ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ํŠน๋ณ„ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ฆ์ƒ์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์ค‘์— ๋” ์ž˜ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6.13.3 ๋ฐ 6.13.4๊ฐ€ bin ๋ณด์•ˆ ๊ฒฐํ•จ์„ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ v6.13.2๋กœ _ ๋˜ ๋Œ๋ฆฌ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.
https://blog.npmjs.org/post/189618601100/binary-planting-with-the-npm-cli

์ง€๊ธˆ ๊ฐ€์žฅ ์ข‹์€ ์กฐ์น˜๋Š” ์ด๊ฒƒ์ด ๋ถ„๋ฅ˜ ๋  ๋•Œ๊นŒ์ง€, ์•„๋งˆ๋„ ํœด๊ฐ€ ๊ธฐ๊ฐ„ ์ดํ›„์— ์ž๋‘๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)
ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

@isaacs (git-blame์ด ๋‚˜์—๊ฒŒ ๊ทธ๋ ‡๊ฒŒ :)

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€๋กœ๋ณด๊ธฐ :

+ npm prune
npm ERR! invalid bin entry for package [email protected]. key=portastic, value=bin/portastic

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-12-23T21_19_21_377Z-debug.log

์˜ˆ, ๋นˆ์„ ์—ฐ๊ฒฐํ•  ๋•Œ prune์ด ์™„์ „ํžˆ ํ•ด๊ฒฐ ๋œ ํด๋”๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค (๋‚ด๊ฐ€ ๋งํ•ด์•ผ ํ•  ๊ฒƒ์€ _prune_์ด ๋นˆ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์†Œ ๋ถˆํ•„์š” ํ•ด ๋ณด์ด์ง€๋งŒ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค).

๋‹ค์Œ CLI ๋ฆด๋ฆฌ์Šค์—์„œ ์ˆ˜์ • ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ npm ci --production ์„ (๋ฅผ) ์‚ฌ์šฉํ•˜์—ฌ "production deps installed, but not dev deps"์ƒํƒœ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌผ๋ก  ci ๊ฐ€ ๊ธฐ์กด node_modules ์ฐพ์œผ๋ฉด ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— git repo์—์„œ deps๋ฅผ ๋ฒˆ๋“ค๋งํ•˜๋Š” ๋ฐ ์˜์กดํ•œ๋‹ค๋ฉด ์ข‹์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ˆ˜์ • ์‚ฌํ•ญ์ด ์–ธ์ œ ์ ์šฉ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

6.13.5๋Š” ๋‹ค์Œ ์ฃผ ํ™”์š”์ผ ์ธ 2019-01-07์— ์ถœ์‹œ ๋  ์˜ˆ์ •์ด๋ฉฐ,์ด ๋ฌธ์ œ์™€ ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•œ pacote ๋ฐ bin-links ์—…๋ฐ์ดํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์—…๋ฐ์ดํŠธ ๋  ์‹œ๊ฐ„์„ ๋Œ€๋žต์ ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋Š” ์ง€๋‚œ ๋ฉฐ์น  ๋™์•ˆ ๋‚˜๋ฅผ ๋ฏธ์น˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋‚˜์˜ฌ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? TeamCity๋ฅผ ํ†ตํ•ด ๋‚ด ๋ชจ๋“  ์ž๋™ ๋ฐฐํฌ๊ฐ€ ์ค‘๋‹จ๋˜์–ด ์ œํ’ˆ์„ ๋ฐฐํฌํ•˜๊ณ  QA ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ง€์—ฐ ๋ผ์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. GH Actions Windows CI์—์„œ ์ด์ƒํ•œ ์˜ค๋ฅ˜๋ฅผ ๋””๋ฒ„๊น…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š”์ด ๋ฌธ์ œ๋ฅผ ์•ž์œผ๋กœ ๋ฉฐ์น  ๋‚ด๋กœ ์ตœ๋Œ€ํ•œ ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

@jwwtaker ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๋ช…๋ น์„ ์—ญ์ˆœ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • npm ์„ค์น˜
  • npm ์ž๋‘

npm prune npm v6.13.6 ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์›๋ž˜ ์„ค๋ช…์—์„œ :

์ด ์ €์žฅ์†Œ ๋ณต์ œ์—์„œ : https://github.com/samhstn/invalid-bin-entry , ๋‹ค์Œ ์‹คํ–‰ :

cd assets
npm prune

๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

npm ERR! invalid bin entry for package [email protected]. key=jsesc, value=bin/jsesc

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/samhstn/.npm/_logs/2020-01-13T13_17_57_425Z-debug.log

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ๋””๋ฒ„๊ทธ ๋กœ๊ทธ : 2020-01-13T13_17_57_425Z-debug.log

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๋ช…๋ น์ด Heroku ๋นŒ๋“œ ํŒฉ์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. npm 6.13.2์—์„œ ๋ฉˆ์ถฐ ์žˆ๊ฑฐ๋‚˜ (npm 6.13.3 ์ดํ›„๋กœ ๋ฐœ์ƒ) package-lock.json ์ œ๊ฑฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (์ด ํŒŒ์ผ์—์„œ๋งŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ ํ•จ). npm 6.13.5๋Š”์ด๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š์œผ๋ฉฐ npm 6.13.6๋„ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด @isaacs ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด Azure DevOps CI์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ ํ–ˆ์œผ๋ฏ€๋กœ ๋ˆ„๊ตฐ๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ดํ•˜์‹ญ์‹œ์˜ค.

  • npm prune ๋˜๋Š” npm ์„ค์น˜ ์ „์— "Node.js ๋„๊ตฌ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ"์ด๋ผ๋Š” ์ƒˆ ์ž‘์—…์„ ํŒŒ์ดํ”„ ๋ผ์ธ์— ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.
  • "๋ฒ„์ „ ์‚ฌ์–‘"ํ•„๋“œ์—์„œ์™€ ๊ฐ™์ด 13.3.0์„ ์„ค์ •ํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค๊ณผ ๋‹ฌ๋ฆฌ npm 6.13.4 ์—์„œ 6.13.6 ํ•˜๋ฉด ์ œ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ ์–ด๋„ _some_ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Œ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„ ๊ณ ์น  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

20 ์ผ์ด ์ง€๋‚˜๋ฉด ์ ์–ด๋„ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰