Cli: [๋ฒ„๊ทธ] npm ์—…๋ฐ์ดํŠธ --depth๊ฐ€ ์ข…์†์„ฑ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

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

๋ญ? ์™œ

NPM์€ ์žฌ๊ท€ / ์‹ฌ์ธต ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜ํ–‰ ํ•œ ํ›„ ์ถฉ์กฑ๋˜์ง€ ์•Š์€ ์ข…์†์„ฑ์„๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์–ธ์ œ


์–ด๋””



  • ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ

์–ด๋–ป๊ฒŒ

ํ˜„์žฌ ํ–‰๋™

  • ์—…๋ฐ์ดํŠธ ํ›„ npm ls ๋Š” ๋งŽ์€ ๋ˆ„๋ฝ / ๋ฏธ์ถฉ์กฑ ์ข…์†์„ฑ์„๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    โ”œโ”€โ”ฌ @semantic-release/[email protected] โ”‚ โ”œโ”€โ”€ @semantic-release/[email protected] deduped โ”‚ โ”œโ”€โ”€ [email protected] deduped โ”‚ โ”œโ”€โ”ฌ [email protected] โ”‚ โ”‚ โ””โ”€โ”€ [email protected] โ”‚ โ”œโ”€โ”ฌ UNMET DEPENDENCY [email protected]
    npm ERR! missing: [email protected], required by @semantic-release/[email protected]

์žฌํ˜„ ๋‹จ๊ณ„

  1. ๋กœ์ปฌ๋กœ ํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  npm init
  2. ๋‘˜ ์ด์ƒ์˜ ์ข…์†์„ฑ ์ˆ˜์ค€์ด์žˆ๋Š” ํŒจํ‚ค์ง€ ์„ค์น˜ (์˜ˆ : npm i -D @semantic-release/exec
  3. ์ตœ์‹  ๋ฒ„์ „์„ ์–ป๊ธฐ ์œ„ํ•ด ๊นŠ์€ ์ข…์†์„ฑ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค.
  4. npm --depth 9999 update

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘

  • ์ถฉ์กฑ๋˜์ง€ ์•Š์€ ์ข…์†์„ฑ์ด ์—†์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋Š” ๋ถ€๋ชจ์˜ package.json ํŒŒ์ผ ๋˜๋Š” ์กฐ์ƒ์˜ npm-shrinkwrap.json ์— ๋”ฐ๋ผ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ์ฆ‰, package-lock.json ๊ฐ€์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๊ณ  ๋ชจ๋“  ์ข…์†์„ฑ์„ ํ•ด๊ฒฐํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์„ค์น˜ / ์—…๋ฐ์ดํŠธ / ์ œ๊ฑฐํ•œ ๋‹ค์Œ ํ•ด๊ฒฐ ๋œ ํŠธ๋ฆฌ๋กœ ์ž ๊ธˆ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

WHO



  • ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ

์ฐธ๊ณ  ๋ฌธํ—Œ



  • ํ•ด๋‹น ์‚ฌํ•ญ ์—†์Œ

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

์ค‘๋ณต ๋œ ๋ฌธ์ œ๋ฅผ ์ค€๋น„ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ญ? ์™œ

npm update --depth <number> ๋ช…๋ น์ด ์—…๋ฐ์ดํŠธ ๋œ devDependencies ์ข…์†์„ฑ์— ๋Œ€ํ•ด dev: true ์„ ์žƒ์Šต๋‹ˆ๋‹ค.

์–ธ์ œ

  • ์ƒˆ๋กœ์šด devDependencies ์ข…์†์„ฑ์ด์—†๋Š” ํŒจํ‚ค์ง€์— npm update --depth <number> ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค

์–ด๋””

  • npm ๊ณต์šฉ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

์–ด๋–ป๊ฒŒ

ํ˜„์žฌ ํ–‰๋™

์—…๋ฐ์ดํŠธ ๋œ devDependencies ์ข…์†์„ฑ์— ๋Œ€ํ•ด dev: true ์†์‹ค

์žฌํ˜„ ๋‹จ๊ณ„

  1. ์ด repo https://github.com/pahan35/npm-bugs ๊ฐ€์ ธ ๊ฐ€๊ธฐ
  2. ์ฒดํฌ ์•„์›ƒ ์ง€์  loses-dev-for-dev-deps
  3. npm i
  4. npm update --depth 7

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘

์ด ์ž‘์—…์€ ์—…๋ฐ์ดํŠธ ๋œ devDependencies ์ข…์†์„ฑ์— ๋Œ€ํ•ด dev: true ์„ ์œ ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ฌธํ—Œ

# 944์™€ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ค‘๋ณต ๋œ ๋ฌธ์ œ๋ฅผ ์ค€๋น„ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ญ? ์™œ

npm update --depth <number> ๋ช…๋ น์ด ์—…๋ฐ์ดํŠธ ๋œ devDependencies ์ข…์†์„ฑ์— ๋Œ€ํ•ด dev: true ์„ ์žƒ์Šต๋‹ˆ๋‹ค.

์–ธ์ œ

  • ์ƒˆ๋กœ์šด devDependencies ์ข…์†์„ฑ์ด์—†๋Š” ํŒจํ‚ค์ง€์— npm update --depth <number> ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค

์–ด๋””

  • npm ๊ณต์šฉ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

์–ด๋–ป๊ฒŒ

ํ˜„์žฌ ํ–‰๋™

์—…๋ฐ์ดํŠธ ๋œ devDependencies ์ข…์†์„ฑ์— ๋Œ€ํ•ด dev: true ์†์‹ค

์žฌํ˜„ ๋‹จ๊ณ„

  1. ์ด repo https://github.com/pahan35/npm-bugs ๊ฐ€์ ธ ๊ฐ€๊ธฐ
  2. ์ฒดํฌ ์•„์›ƒ ์ง€์  loses-dev-for-dev-deps
  3. npm i
  4. npm update --depth 7

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘

์ด ์ž‘์—…์€ ์—…๋ฐ์ดํŠธ ๋œ devDependencies ์ข…์†์„ฑ์— ๋Œ€ํ•ด dev: true ์„ ์œ ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ฌธํ—Œ

# 944์™€ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ npm update ๊ฐ€ --depth ๊ฐ€ 0๋ณด๋‹ค ํด ๋•Œ ์ข…์†์„ฑ์— ๋Œ€ํ•œ dev ํ”Œ๋ž˜๊ทธ๋ฅผ ์žŠ์–ด ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋‚ฎ์€ ๊นŠ์ด์—๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์„๊นŒ์š”?

๋…ธ๋“œ ๋ชจ๋“ˆ ( rm -rf node_modules; npm install )์„ ๋‹ค์‹œ ์„ค์น˜ ํ•œ ํ›„ dev ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ณต์›๋˜์—ˆ์Œ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

npm update --depth ์„ ์‚ฌ์šฉํ•œ ํ›„ dev ํ”Œ๋ž˜๊ทธ๋ฅผ ์žƒ์–ด๋ฒ„๋ฆฐ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์ข…์†์„ฑ์—์„œ ์‹ค์ œ ์ข…์†์„ฑ ์ธ ๋‚ด ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ๋ฐœ ์ข…์†์„ฑ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ์ข…์†์„ฑ์ด "@ types / node"๋ฅผ ์ข…์†์„ฑ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์ง€๋งŒ ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ฐœ๋ฐœ ์ข…์†์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ข…์†์„ฑ "a"์˜ package.json :

{
  name: "a",
  dependencies: {
    "@types/node": ">=5.10"
  }
}

๋‚ด ํ”„๋กœ์ ํŠธ :

{
  dependencies: {
    "a": "1.0.0"
  },

  devDependencies: {
    "@types/node": "^12.0.0",
    "somethingElse": "1.0.0"
  }
}

npm update --depth=99 ์ดํ›„ dev ํ”Œ๋ž˜๊ทธ๋Š” somethingElse ์—์„œ๋Š” ๊ดœ์ฐฎ์ง€ ๋งŒ @type/node ์—์„œ๋Š” ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : npm install ๋Š” @types/node ๋ฅผ ๋ฃจํŠธ์—์„œ dev ์ข…์†์„ฑ์œผ๋กœ + ๊ตฌ์„ฑ ์š”์†Œ "a"์˜ ์ค‘์ฒฉ ๋œ node_module์—์„œ ์ข…์†์„ฑ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
npm update ๋Š” ๋ฃจํŠธ์— ์ข…์†์„ฑ์œผ๋กœ ํ•œ ๋ฒˆ๋งŒ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

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