Yarn: ๊ฒฝ์Ÿ ์ž ๊ธˆ ํŒŒ์ผ๋กœ ์ธํ•ด ๋ถˆ๋Ÿ‰ํ•œ UX ์ƒ์„ฑ

์— ๋งŒ๋“  2018๋…„ 04์›” 12์ผ  ยท  93์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: yarnpkg/yarn

NB : ์ €๋Š” yarn repo์—์„œ์ด ๋ฌธ์ œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ yarn๊ณผ npm๊ฐ„์— ๊ณต์œ ๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

5 ์›”์— npm 5๊ฐ€ ์ถœ์‹œ๋จ์— ๋”ฐ๋ผ Node ์ƒํƒœ๊ณ„์—๋Š” ์ด์ œ ๋‘ ๊ฐœ์˜ ์ž ๊ธˆ ํŒŒ์ผ ๊ธฐ๋ฐ˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ „๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์Šน๋ฆฌ์˜€์œผ๋ฉฐ์ด ๋ถ„์•ผ์—์„œ ๊ฒฝ์Ÿ์„ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์Ÿ ์ž ๊ธˆ ํŒŒ์ผ ํ˜•์‹์ด ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž, ํŠนํžˆ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

npm 5๊ฐ€ ๋‚˜์™”์„ ๋•Œ Heroku ๋Š” npm ๋ฐ yarn lockfiles ๋ชจ๋‘์™€ ํ•จ๊ป˜ ์‹ ์ฒญ์„œ๋ฅผ ์ œ์ถœํ•˜๋ฉด ์ƒˆ๋กœ์šด ์‹คํŒจ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ๋ช‡ ๋‹ฌ ๋™์•ˆ ์ด๊ฒƒ์ด Heroku์—์„œ ๋…ธ๋“œ ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ด์œ ๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ์‹คํŒจ๋Š” ํ”Œ๋žซํผ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ ๋นŒ๋“œ ์‹คํŒจ์˜ ์•ฝ 10 ~ 12 %๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋งค๋‹ฌ ์ˆ˜์ฒœ ๋ช…์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด์ด ๊ฒŒ์ž„์„ ์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์žฅ์†Œ์—์„œ ๋‘ ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋†€๋ž๋„๋ก ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ฒฝํ—˜ ๋งŽ์€ ๊ฐœ๋ฐœ์ž ๋กœ์„œ๋„ ํŠน์ • ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ž˜๋ชป๋œ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ์ž์‹ ์„ ์žก์•„์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž, lockfile ๋˜๋Š” git repo๊ฐ€ โ€‹โ€‹๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์„œ๋ฒ„ / ๋ฐ˜์‘ / ๊ฐ๋„ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝํ—˜์ด์—†๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๋งค์šฐ ํ˜ผ๋ž€ ์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ๋‘ ๋„๊ตฌ ๋ชจ๋‘ ๊ฒฝ๊ณ  ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

โฏ ls *lock*   
ls: *lock*: No such file or directory

โฏ npm --version
5.8.0

โฏ yarn --version
1.5.1

โฏ npm install
npm notice created a lockfile as package-lock.json. You should commit this file.

added 659 packages from 437 contributors in 10.553s

โฏ yarn install  
yarn install v1.5.1
info No lockfile found.
[1/4] ๐Ÿ”  Resolving packages...
[2/4] ๐Ÿšš  Fetching packages...
[3/4] ๐Ÿ”—  Linking dependencies...
[4/4] ๐Ÿ“ƒ  Building fresh packages...
success Saved lockfile.
โœจ  Done in 7.67s.

โฏ ls *lock*          
package-lock.json yarn.lock

์›น์ƒ์˜ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์„œ์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ npm install ๋ฅผ ์ง€์‹œํ•˜๋Š” Yarn ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ํŠนํžˆ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ ๋˜๋Š” Stack Overflow์—์„œ ๋ช…๋ น์„ ๋ณต์‚ฌํ•˜๊ณ  ๋ถ™์—ฌ ๋„ฃ๋Š” ์‚ฌ์šฉ์ž๋Š” ์—ฌ๊ธฐ์—์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹ค์— @zkat ๋ฐ @iarna NPM์—์„œ์™€ @arcanis ์–˜๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค, ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“ ์ด๊ฐ€ ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๋ผ๊ณ  ๋™์˜ํ•˜์ง€๋งŒ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํ•ฉ์˜๋Š” ์—†์—ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ์ด ๋ฌธ์ œ๋Š” ํ† ๋ก ์„ ์œ ๋„ํ•˜๊ณ  ๋‘ ๋„๊ตฌ ๋ชจ๋‘ ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ๋„์šธ ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋™์˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์ œ์•ˆ ๋œ ์ž ์žฌ์  ์ธ ์™„ํ™” ๋ฐฉ๋ฒ• ๋ชฉ๋ก์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž ์žฌ์  ์†”๋ฃจ์…˜

์•„๋ฌด๊ฒƒ๋„ํ•˜์ง€ ๋งˆ์„ธ์š”

์‚ฌ์šฉ์ž๊ฐ€ ๋‘ ๊ฐœ์˜ ์ž ๊ธˆ ํŒŒ์ผ์„ ์›ํ•  ์ˆ˜์žˆ๋Š” ๊ธฐ์ˆ ์  ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ ์™ธ๋ถ€ ๋„๊ตฌ๊ฐ€ ํ•ด๋‹น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์‚ฌ์šฉํ•  ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ์ด์žˆ๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅ˜

Yarn์€ ์˜ค๋ฅ˜๋ฅผ ์ธ์‡„ํ•˜๊ณ  package-lock.json ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ์ข…๋ฃŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์žฅ์  :

  • ๊ฐ„๋‹จํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฌ์›€
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ฆ‰์‹œ ์ˆ˜์ •ํ•  ์ˆ˜์žˆ๋Š” ์œ„์น˜์—์žˆ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์  :

  • ํ™˜์ƒ์ ์ธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ ๋ณ€ํ™˜

์›์‚ฌ ์ฝ์„ ์ˆ˜ package-lock.json ๋กœ ๋ณ€ํ™˜ yarn.lock , ์ œ๊ฑฐ package-lock.json . npm์€ ๊ทธ ๋ฐ˜๋Œ€๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์  :

  • ํ›Œ๋ฅญํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜
  • ๋„๊ตฌ๋ฅผ ์ „ํ™˜ํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” ๋ถ€์ž‘์šฉ์œผ๋กœ ์ƒˆ๋กœ์šด ์ข…์†์„ฑ ์ง‘ํ•ฉ์„ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์  :

  • ๋‚ด ์ดํ•ด๋Š” ๋‹ค๋ฅธ ์ข…์†์„ฑ ํ•ด๊ฒฐ ์ „๋žต์œผ๋กœ ์ธํ•ด์ด ๋ณ€ํ™˜์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์†์‹ค ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์œ ์ง€ํ•˜๋ ค๋ฉด ๊ฐ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ž ๊ธˆ ํŒŒ์ผ ํ˜•์‹์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ž ๊ธˆ ํŒŒ์ผ ์‚ญ์ œ

๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๊ณ  ์ƒˆ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.

์žฅ์  :

  • ์ด ์ƒํ™ฉ์„ ํšจ๊ณผ์ ์œผ๋กœ ๋ฐฉ์ง€

๋‹จ์  :

  • ๋†€๋ผ์šด ํ–‰๋™
  • ์‚ฌ์šฉ์ž๋Š” ์ƒˆ๋กœ์šด ์ข…์†์„ฑ ์ง‘ํ•ฉ์„ ์–ป์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๋‹ค๋ฅธ ๋„๊ตฌ ์‹คํ–‰

yarn์— package-lock.json ๋˜์ง€๋งŒ yarn.lock ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด npm install ๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์  :

  • ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ์–ป์Œ

๋‹จ์  :

  • ๋†€๋ผ์šด ํ–‰๋™
  • ๋‹ค์†Œ ๋ณต์žก

package.json ์— ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ‘œ์‹œ

package.json ์— ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

"package-manager": "yarn"

์žฅ์  :

  • ์‚ฌ์šฉ์ž์˜ ์˜๋„๋ฅผ ๋ช…์‹œ ์ ์œผ๋กœ ์ „๋‹ฌ

๋‹จ์  :

  • ์‚ฌ์šฉ์ž๋ฅผ์œ„ํ•œ ๋” ๋งŽ์€ ๊ตฌ์„ฑ ์ถ”๊ฐ€

๋‹ค๋ฅธ?

์•„๋งˆ๋„ ๋” ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋†“์น˜๊ณ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

cat-compatibility needs-discussion triaged

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

๋ชจ๋‘-์ฃผ์ œ์— ์ง‘์ค‘ํ•˜๊ณ  ์ง์ ‘ ๊ด€๋ จ์ด์—†๋Š” ๋Œ“๊ธ€์€ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค (์˜ˆ : Discord ์ฑ„๋„). ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ณต์ •ํ•˜๊ฒŒ npm <> yarn ํ† ๋ก ์ด ์—ฌ๊ธฐ์— ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

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

package.json์— ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ‘œ์‹œํ•˜์‹ญ์‹œ์˜ค.

engine ํ•„๋“œ์— ๋Œ€ํ•œ ์ข‹์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿค”

์™•๋ณต package-lock.json โ†’ yarn.lock โ†’ package-lock.json ๋Š” ์†์‹ค์ด ์žˆ์ง€๋งŒ ์ค‘์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. yarn.lock โ†’ package-lock.json โ†’ yarn.lock ๋Š” ์†์‹ค์ด ์—†์–ด์•ผํ•ฉ๋‹ˆ๋‹ค, AFAIK.

npm ๊ด€์ ์—์„œ ์ €๋Š” yarn ๊ฐ€ package-lock.json ๋ฅผ๋ณด๊ณ  yarn.lock ๋ฅผ ๊ฐ€์ ธ ์™€์„œ package-lock.json ์ œ๊ฑฐํ•˜๋Š” ์˜ต์…˜์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค npm ์— yarn.lock ๋˜๊ณ  package-lock.json ์—†์œผ๋ฉด ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ`yarn.lock์„ ๊ฐ€์ ธ์˜ค๊ณ  ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒํ•˜๋ฉด ๋‘ ๋„๊ตฌ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์ƒํƒœ (ํŒŒ์ผ์ด ๋‘˜ ๋‹ค์—์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž„)์— ๋‘์ง€ ์•Š๊ณ  ์›ํ™œํ•˜๊ฒŒ ์•ž๋’ค๋กœ ์ „ํ™˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ package-lock.json ๋„ yarn.lock ๋„ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ์— ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„ ์šฐ๋ ค๋ฉ๋‹ˆ๋‹ค (Yarn์€ ํ˜„์žฌ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ). ๊ทธ ๊ณผ์ •์—์„œ ์šฐ๋ฆฌ ํ˜•์‹์— ๋Œ€ํ•œ ์ž์œ .

์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ ๊ธฐ๋Œ€๋ฅผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์ •ํ™•ํžˆ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค, ์šฐ๋ฆฌ ๋ชจ๋‘๋ฅผ๋ฐ›์„ ์ž๊ฒฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค๋„ ์ƒํ˜ธ ์šด์šฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋…ธ๋ ฅ ๋Š๋‚Œ -์ด ๋ฌธ์ œ๋Š” ์›์‚ฌ์™€ NPM ์ผ๋ฐ˜์ ์œผ๋กœ, ์›๋ž˜ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๋…ผ์˜ ๊ฐ„์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ์˜ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐ ๋‘ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ ์œ„ํ—˜ํ•œ ๊ฐ€์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (ํ•œ ๊ฐ€์ง€ ๋ถ„๋ช…ํ•œ ์˜ˆ๋Š” ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ž‘์—… ๊ณต๊ฐ„ ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ์—์„œ npm์„ ์‹คํ–‰ํ•˜๋ฉด ์ž‘์—… ๊ณต๊ฐ„์ด ์กฐ์šฉํžˆ ์ค‘๋‹จ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค).

@ yarnpkg / core, ์ƒ๊ฐ?

๋‘ ๋„๊ตฌ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ์ž ๊ธˆ ํŒŒ์ผ์—์„œ ๋‹ค์Œ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” @iarna์˜ ์•„์ด๋””์–ด๊ฐ€ ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค.
์ž๋™์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.
๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ›„ ๊ฐ€์ ธ์˜จ ์ž ๊ธˆ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ๋‘ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ฒฝ์Ÿํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋„๊ตฌ ๋ชจ๋‘ ๊ฒฝ๊ณ ๋ฅผ ์ธ์‡„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ณ„์† ์ง„ํ–‰ํ•˜๋ผ๋Š” ์‚ฌ์šฉ์ž ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ 100 % ํ˜ธํ™˜์„ฑ์„ ๋‹ฌ์„ฑํ•˜๋ฉด ์ž ๊ธˆ์ด๋œ๋‹ค๋Š” Mael์˜ ์š”์ ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์ผํšŒ์„ฑ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๋Š” ์šฐ๋ฆฌ์˜ install.js์—์žˆ๋Š” ๋‹ค์†Œ ์ž‘์€ ๊ธฐ๋Šฅ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ธก๋ฉด.

2018 ๋…„ 4 ์›” 11 ์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 9:49 Maรซl Nison [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ์•ฝ๊ฐ„ ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
package-lock.json ๋˜๋Š” yarn.lock์€ ํŒŒ์ผ์— ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(Yarn์€ ํ˜„์žฌ ๊ทธ๋ ‡์ง€ ์•Š์ง€๋งŒ ๊ทธ ์ด์œ ๋Š” ์•„๋‹™๋‹ˆ๋‹ค), ํ˜•์‹์— ๋Œ€ํ•œ ์ž์œ ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
์ง„ํ–‰์ค‘.

์ด ๋ฌธ์ œ๋Š” ๋˜ํ•œ Yarn๊ณผ Yarn ๊ฐ„์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ npm์€ ์›๋ž˜ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๋…ผ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ƒํ˜ธ ์šด์šฉ์„ฑ์ด ๋„ˆ๋ฌด ๋†’๋‹ค๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€
๋ชจ๋“  ๊ฒƒ์ด ๋‘˜ ๋‹ค์—์„œ ๋˜‘๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ ํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ธฐ๋Œ€๋ฅผ ๊ฐ€์ง€๊ณ 
์œ„ํ—˜ํ•œ ๊ฐ€์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค (ํ•œ ๊ฐ€์ง€ ๋ถ„๋ช…ํ•œ ์˜ˆ๋Š”
๋ˆ„๊ตฐ๊ฐ€๊ฐ€ npm์„ ์‹คํ–‰ํ•˜๋ฉด ์ž‘์—… ๊ณต๊ฐ„์ด ์กฐ์šฉํžˆ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.
์ž‘์—… ๊ณต๊ฐ„ ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ).

@ yarnpkg / core https://github.com/orgs/yarnpkg/teams/core , ์ƒ๊ฐ?

โ€”
์–ธ๊ธ‰ ๋œ ํŒ€์— ์†ํ•ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์‹  ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/yarnpkg/yarn/issues/5654#issuecomment-380677110 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์‹ค
https://github.com/notifications/unsubscribe-auth/ACBdWI9jnLJeFqH8v2T-AB74sQO1PMIjks5tntzrgaJpZM4TQ5-B
.

๋ช‡ ์ฃผ ์ „์— "๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ ๋ณ€ํ™˜"์†”๋ฃจ์…˜ ๊ตฌํ˜„์— ๊ด€์‹ฌ์„ ํ‘œ๋ช… ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—

ํ•‘ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์˜ˆ, ์ €๋Š” ์‹ค์ œ๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ •ํ™•ํžˆ ์ž‘์—…ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฃผ์— ์›์‚ฌ RFC๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ชจ๋“  ์ดํ•ด ๊ด€๊ณ„์ž๋ฅผ ํ•‘ํ•  ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ yarn.lock <==> package-lock.json ๋ณ€ํ™˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์•ฝ๊ฐ„์˜ ์†์‹ค์ด ์žˆ์ง€๋งŒ ๋…ผ๋ฆฌ์  ์ธ ์†์‹ค์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ์ œ ๋ˆˆ์—๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ '์ผํšŒ์„ฑ ๋ณ€ํ™˜'์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๊ฒƒ์€ ์™„์ „ํžˆ ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ๋…ผ์˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/imsnif/synp
100 %๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๋ณ€ํ™˜ ํ•  ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ์กด ๋ฐ ํ˜„์žฌ node_modules ํด๋”์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ํŒจํ‚ค์ง€ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ์žฌ ์ž‘์„ฑ ( 2.0.0 ์ง€์ ์—์„œ)์˜ ๋งˆ๋ฌด๋ฆฌ ๋‹จ๊ณ„์— ์žˆ์Šต๋‹ˆ๋‹ค (๋ฉ‹์ง„ pacote lib ์‚ฌ์šฉ).

์ด ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด yarn ๋ฐ npm ๋ชจ๋‘์—์„œ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์€์ง€์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์ƒ๊ฐ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ œ ๋ˆˆ์—๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ '์ผํšŒ์„ฑ ์ „ํ™˜'์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ด๊ฒƒ์€ ์™„์ „ํžˆ ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ”ํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋” ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” Yarn์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์ด๋ฉฐ ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์ด README์—์„œ ๋ช…๋ น์„ ๋ณต์‚ฌ / ๋ถ™์—ฌ ๋„ฃ๊ธฐํ•˜์—ฌ yarn ๋Œ€์‹  npm ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. yarn ์ฒ˜๋ฆฌ ์ค‘์ž…๋‹ˆ๋‹ค.

์ด ๋งฅ๋ฝ์—์„œ ๋‚˜๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ผ์„ ์‹œ๋„ํ•จ์œผ๋กœ์จ ์กฐ์šฉํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ์žƒ๊ณ  ํŒจํ‚ค์ง€ ๋ ˆ์ด์•„์›ƒ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ผ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์•„๋งˆ ์ผ์ด ๊นจ์งˆ ๋•Œ๊นŒ์ง€ ๊ทธ๊ฒƒ์„ ์•Œ์•„ ์ฑ„์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค (ํ™•์ธ ํ”„๋กฌํ”„ํŠธ๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜๋Š” ๊ทธ ๋ช…๋ น์„ ๋ณต์‚ฌ / ๋ถ™์—ฌ ๋„ฃ๊ธฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งน๋ชฉ์ ์œผ๋กœ ์„ค์น˜ ํ”„๋กฌํ”„ํŠธ๋ฅผ ํ™•์ธํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ๋” ๋‚˜์œ ๊ฒƒ์€ ์ž์‹ ์˜ ์ปดํ“จํ„ฐ์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ Yarn์œผ๋กœ ๋‹ค์‹œ ์ „ํ™˜ํ•˜๋ฉด ๋™๋ฃŒ์˜ ์ปดํ“จํ„ฐ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@arcanis- ๋ชจ๋“  ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ์—ฃ์ง€ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๋…ผ์˜ ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์–ธ๊ธ‰ ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋‚˜๋Š” ๋งค์šฐ ๋™์˜ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ์ž ๊ธˆ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ํŽธ๊ฒฌ์ด ์žˆ์–ด์•ผํ•˜๋Š” ๋‹ค๋ฅธ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์€ ์ฃผ๋กœ CI ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด๋Š”๋ฐ, OP๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋น›๋‚  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ๋‘ ๋„๊ตฌ๊ฐ€ ๋‹ค๋ฅธ ๋„๊ตฌ์˜ ์ž ๊ธˆ ํŒŒ์ผ์„ ์•Œ๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์ „ํ™˜์„ ๊ฒฐ์ •ํ•˜๋Š”์‹œ๊ธฐ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์€ ๊ทธ๋“ค์—๊ฒŒ ๋งก๊ธฐ์‹ญ์‹œ์˜ค. ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?

์ด ๊ธฐ๋Šฅ์€ ์ฃผ๋กœ CI ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด๋Š”๋ฐ, OP๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋น›๋‚  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? CI ์‹œ์Šคํ…œ์€ ๋งค์šฐ ๊ฒฐ์ •์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋กœ ๋ณ€ํ™˜ ๋œ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•˜๋Š” ๊ฒƒ์€ PR-time imo์—์„œ ๋” ๋‚˜์˜๊ฒŒ ์žกํ˜€์•ผํ•ฉ๋‹ˆ๋‹ค. CI๋Š” ์ด๊ฒƒ์— ๋„ˆ๋ฌด ๋Šฆ์Šต๋‹ˆ๋‹ค.

์ ์–ด๋„ ๋‘ ๋„๊ตฌ๊ฐ€ ๋‹ค๋ฅธ ๋„๊ตฌ์˜ ์ž ๊ธˆ ํŒŒ์ผ์„ ์•Œ๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„. engine ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ๋” ๊น”๋”ํ•˜๊ฒŒ ๋ณด์ด๊ฒŒํ•˜๋ ค๋ฉด ๋‘ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ ๋…์  ์—”์ง„ ๋ชฉ๋ก์„ ์œ ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (์˜ˆ : "yarn"์€ "npm"์—์„œ ๋งŒ์กฑํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๊ทธ ๋ฐ˜๋Œ€).

๋‚ด ์ƒ๊ฐ์— ์ž ๊ธˆ ํŒŒ์ผ์„ ์ฆ‰์„์—์„œ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ๋„ ํ™•์žฅ ์„ฑ์ด ๋งค์šฐ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ง€๊ธˆ๊นŒ์ง€ package-lock.json ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ–ˆ์ง€๋งŒ pnpm์—๋Š” shrinkwrap.yaml ๋ผ๋Š” ์ž์ฒด ์ž ๊ธˆ ํŒŒ์ผ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ฒ˜๋ฆฌ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•๊ณผ ํ•˜๋‚˜์˜ ๋Œ๋กœ ๋‚˜์˜ฌ ์ˆ˜์žˆ๋Š” ๋‹ค๋ฅธ ํ˜•์‹์„ ์ฐพ์„ ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์€ ์ฃผ๋กœ CI ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด๋Š”๋ฐ, OP๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋น›๋‚  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๋ฉด npm์€ ํ˜„์žฌ CI์— ํŠนํ™”๋œ ๋งค์šฐ ๊ฐ€๋ฒผ์šด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ž ๊ธˆ ํŒŒ์ผ ๋ณ€ํ™˜๊ธฐ์™€ ๊ฐ™์€ ๋ฌด๊ฑฐ์šด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํ•„์š”ํ•œ ์ž‘์—…์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

CI ๊ด€๋ จ :
๋‚ด ์ดˆ๊ธฐ ์ƒ๊ฐ์€ : ๋ฐ˜๋Œ€ ๋„๊ตฌ๋กœ ์ƒˆ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ ํ•  ๋•Œ ๊ฒฝ๊ณ , ์ƒˆ๋กœ ์„ค์น˜ํ•  ๋•Œ ๋ณ€ํ™˜ (๋˜๋Š” ๋” ๋ณด์ˆ˜์ ์œผ๋กœ : ์ƒˆ ์„ค์น˜์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํŒจํ•˜๊ณ  import ๋ช…๋ น ๋˜๋Š” ๊ตฌ์„ฑ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ†ตํ•ด ๋ณ€ํ™˜์„ ์ž์„ธํžˆ ํ—ˆ์šฉ) ์„ค์น˜์šฉ).

์ด์ „์— ํ˜ผํ•ฉ ๋œ npm / yarn ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ–ˆ์„ ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ git ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋™์œผ๋กœ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํž˜๋“  ๊ณผ์ •์ด์—ˆ๊ณ  ์šฐ๋ฆฌ๊ฐ€ ํ˜ผ์ž๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

ํ™•์žฅ ์„ฑ :
์ด๊ฒƒ๋„ ์„ค๋ช…ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
๋ณ€ํ™˜์ด ์ˆ˜ํ–‰๋˜๋ฉด ์ค‘๊ฐ„ ๋…ผ๋ฆฌ์  ๋ฐ ๋ฌผ๋ฆฌ์  ํŒจํ‚ค์ง€ ํŠธ๋ฆฌ (์ž ๊ธˆ ํŒŒ์ผ์—์žˆ๋Š” ๊ฒฝ์šฐ)๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์ž ๊ธˆ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ ํ•  ๋•Œ ํ•ด๋‹น ํŠธ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค (๋˜๋Š” yarn ์—์„œ ๋ณ€ํ™˜ํ•˜๊ณ  ๋ฌผ๋ฆฌ์  ํŠธ๋ฆฌ๊ฐ€์—†๋Š” ๊ฒฝ์šฐ ์ •์ƒ์ ์ธ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ƒ์„ฑ๋จ).
์ด๋ ‡๊ฒŒํ•˜๋ฉด ๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ ์œ ํ˜•๊ฐ„์— ์‰ฝ๊ฒŒ ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์šฐ๋ฆฌ๊ฐ€ํ•ด์•ผ ํ•  ์ผ์€ ๊ฐ ์œ ํ˜•์— ๋Œ€ํ•ด ๋…ผ๋ฆฌ์  / ๋ฌผ๋ฆฌ์  ํŠธ๋ฆฌ๋กœ /์—์„œ ๋ณ€ํ™˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค).

์ด๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ํ˜„์žฌ ๋„๊ตฌ์˜ ๊ธฐ๋Šฅ๋ณด๋‹ค ์•ฝ๊ฐ„ ์•ž์„œ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ํฐ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(npm์˜ ์ƒˆ๋กœ์šด ci ๋„๊ตฌ์— ๊ด€ํ•ด์„œ๋Š”-๋ฌด์Šจ ๋œป์ธ์ง€ ์•Œ์ง€๋งŒ ์ด๊ฒƒ์ด ํ˜„์žฌ ๋…ผ์˜๋ณด๋‹ค ์กฐ๊ธˆ ์•ž์„œ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?)

๋˜๋Š” ๋” ๋ณด์ˆ˜์ ์œผ๋กœ : ์ƒˆ๋กœ ์„ค์น˜ํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹คํŒจํ•˜๊ณ  ๊ฐ€์ ธ ์˜ค๊ธฐ ๋ช…๋ น์„ ํ†ตํ•ด ๋ณ€ํ™˜์„ ์ž์„ธํžˆ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ €๋Š”์ด ๋ณ€ํ™˜ ๋กœ์ง์„ yarn import ๋ช…๋ น์— ์™„์ „ํžˆ ์ถ”๊ฐ€ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Yarn ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•  ๊ฒฝ์šฐ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€๋กœ ์ถ”์ถœ ํ•  ์ˆ˜์žˆ๋Š” ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :) ๋‚ด ์˜๊ฒฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ฑ„ํƒํ•ด์•ผํ•˜๋Š” ๊ธฐ๋ณธ ๋™์ž‘์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

npm@6 ์—์„œ๋Š” ๋จผ์ € ์„ค์น˜๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ package-lock.json -> yarn.lock ์†์‹ค์—†์ด ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ, ์‹๋ณ„์ž ๋“ฑ์„ ํฌํ•จํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (npm @ 6 ์˜ pkglock์—๋Š” requires ํ•„๋“œ์— ๋ฒ„์ „ ๋ฒ”์œ„๊ฐ€ ์žˆ์œผ๋ฉฐ yarn.lock ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๊นŒ?)

์•„, ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์€ ๋˜ํ•œ ํ•„์š” https://github.com/yarnpkg/yarn/pull/5042 NPM์€์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—,์ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์‚ฌ์‹ค ์ „์— ๋ฐฐ์†ก์— sha1 ๋‹ค์–‘ํ•œ์—์„œ pkglock์˜๋ฅผ ์ผ€์ด์Šค.

@arcanis- ํ™˜์ƒ์ ์ž…๋‹ˆ๋‹ค! ๊ทธ๋ž˜์„œ PR์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. package-lock.json ํŒŒ์ผ์„ ์„ค์น˜ํ•˜๊ณ  ์ฐพ์„ ๋•Œ ๊ฒฝ๊ณ 
  2. package-lock.json ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ฐพ์„ ๋•Œ ๊ฒฝ๊ณ 
  3. import ๋ช…๋ น์„ ํ†ตํ•ด package-lock.json ์—์„œ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (๋ฐ ์ดํ›„ ํŒŒ์ผ ์‚ญ์ œ)
    ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? (๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ตฌ์ฒด์ ์ธ ๋Œ€ํ™”๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค)

@zkat- npm@6 ๋Œ€๋‹จํ•ฉ๋‹ˆ๋‹ค! ๋‚˜์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ๋‹ค๋ฉด ๋ชจ๋“  ์ž ๊ธˆ ํŒŒ์ผ ๋ฒ„์ „์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ๋กœ ํด๋ฐฑํ•˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. npm ๋Œ€ํ•ด ๋น„์Šทํ•œ (๋˜๋Š” ๋‹ค์†Œ ๋‹ค๋ฅธ) ๋™์ž‘์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ฌผ์–ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๋ฉด npm์€ ํ˜„์žฌ CI์— ํŠนํ™”๋œ ๋งค์šฐ ๊ฐ€๋ฒผ์šด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ž ๊ธˆ ํŒŒ์ผ ๋ณ€ํ™˜๊ธฐ์™€ ๊ฐ™์€ ๋ฌด๊ฑฐ์šด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํ•„์š”ํ•œ ์ž‘์—…์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"ํ˜„์žฌ ์ž‘์—… ์ค‘"์ด "๋ฐฐ์†ก ์™„๋ฃŒ"๋ฅผ ์˜๋ฏธํ•˜๋ฉด ์˜ˆ. =)

๋‹น์‹ ์ด ์ œ์•ˆํ–ˆ๋“ฏ์ด, ํ˜„์žฌ yarn.locks ๋กœ๋”ฉ์€ ๊ทธ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค (ํŒจํ‚ค์ง€ ํŠธ๋ฆฌ๋ฅผ ๋ ˆ์ด์•„์›ƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—).ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๊ทธ ๋ ˆ์ด์•„์›ƒ์„ ํ•  ์ˆ˜์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋๋‚ฌ๋‹ค๋ฉด ๋กœ๋”ฉ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค yarn.locks. (์ด์ƒ์ ์œผ๋กœ ์ด๊ฒƒ์€ Yarn๊ณผ ๊ณต์œ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.) ๋ถ„๋ช…ํžˆ ๊ธฐ์กด ์ž ๊ธˆ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ์— ๊ด€ํ•œ ํ•œ ์ˆœ์ „ํžˆ ์ฝ๊ธฐ ์ „์šฉ์ž…๋‹ˆ๋‹ค.

package-lock.json ํŒŒ์ผ์„ ์„ค์น˜ํ•˜๊ณ  ์ฐพ์„ ๋•Œ์˜ ๊ฒฝ๊ณ 

์ง€์›๋˜์ง€ ์•Š๋Š” ์ข…๋ฅ˜์˜ ์ž ๊ธˆ ํŒŒ์ผ์ด์žˆ์„ ๋•Œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ๋Š” Heroku๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์•Š์„๊นŒ ๊ฑฑ์ • ๋ฉ๋‹ˆ๋‹ค.

์ง€์›๋˜์ง€ ์•Š๋Š” ์ข…๋ฅ˜์˜ ์ž ๊ธˆ ํŒŒ์ผ์ด์žˆ์„ ๋•Œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ๋Š” Heroku๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์•Š์„๊นŒ ๊ฑฑ์ • ๋ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ ๋Š” ๊ฐœ์„ ์ด ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฉ”์‹œ์ง€๊ฐ€ ์ข‹์€ ์˜ค๋ฅ˜๋Š” imo ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚˜ ์ž์‹ ์„ ์œ„ํ•ด์„œ๋งŒ ๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ช‡๋ช‡ ํ”„๋กœ์ ํŠธ๋Š” yarn์„ ์‚ฌ์šฉํ•˜๊ณ  ์ผ๋ถ€๋Š” npm์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์ข…์ข… ๊ทธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ž˜๋ชป๋œ ๊ฒƒ์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๋‹ค. ๋น ๋ฅธ ์˜ค๋ฅ˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ•˜๋Š” ๊ฒƒ์„ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ ๋ผ๋ฉด ํฌ๊ณ  ๋ถ„๋ช…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. IME ์‚ฌ์šฉ์ž๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์˜ ์ถœ๋ ฅ์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ›ˆ๋ จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ๊ฒฝํ—˜์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์—ฐ๋ฝ์„ํ–ˆ๊ณ , ๋ง‰ ์‹œ์ž‘ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๊ทธ ๊ฒฝํ—˜์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€์— ๋Œ€ํ•œ ํฌ๋ง์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

CI ์‹œ์Šคํ…œ์€ ๋งค์šฐ ๊ฒฐ์ •์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋กœ ๋ณ€ํ™˜ ๋œ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•˜๋Š” ๊ฒƒ์€ PR-time imo์—์„œ ๋” ๋‚˜์˜๊ฒŒ ์žกํ˜€์•ผํ•ฉ๋‹ˆ๋‹ค. CI๋Š” ์ด๊ฒƒ์— ๋„ˆ๋ฌด ๋Šฆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋™์˜ํ•œ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ๋นŒ๋“œ / CI ์„œ๋น„์Šค์— ๋„๋‹ฌ ํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ถˆํ™•์‹คํ•œ ์ƒํƒœ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋นŒ๋“œ์— ์‹คํŒจํ•˜์ง€ ์•Š๊ณ  ํŽธํ•˜๊ฒŒ ๋Š๋‚„ ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์‚ฌ์šฉ์ž๊ฐ€ package.json ์„ ํ˜ธ๋„๋ฅผ ํ‘œ์‹œ ํ•  ์ˆ˜์žˆ๋Š” ํ—ˆ์šฉ ๋œ ๋ฐฉ๋ฒ•์ด์žˆ๋Š” ๊ฒฝ์šฐ ์˜€์ง€๋งŒ ๊ทธ ์†”๋ฃจ์…˜์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋งŽ์€ ๋ถ€๋‹ด์„์ค๋‹ˆ๋‹ค.

์ง€์›๋˜์ง€ ์•Š๋Š” ์ข…๋ฅ˜์˜ ์ž ๊ธˆ ํŒŒ์ผ์ด์žˆ์„ ๋•Œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ๋Š” Heroku๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์•Š์„๊นŒ ๊ฑฑ์ • ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž์—๊ฒŒ ์‹ค์ œ๋กœ Heroku๋ฅผ ํ‘ธ์‹œํ•˜๊ธฐ ์ „์— ์›ํ•˜์ง€ ์•Š๋Š” ์ผ์„ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฒฝ๊ณ ํ•จ์œผ๋กœ์จ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ˆซ์ž๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ณ€๊ฒฝ ๋ ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ๋ช‡ ์ฃผ ์•ˆ์— ํ™•์ธํ•˜๊ณ  ๋” ๋‚˜์•„๊ฐˆ ํ•„์š”๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•„์š”ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ ๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋ฒˆ์งธ ์ข‹์€ ๋ฐ˜๋ณต์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฝ๊ณ ๋ฅผ ์ œ์•ˆํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„์œ„ํ•œ ์ •์งํ•œ ์งˆ๋ฌธ : package-lock.json ๊ฐ€์žˆ๋Š” ๋™์•ˆ yarn install ๋˜๋Š” yarn add ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ˆ˜๊ฐ€ ์•„๋‹Œ ์ƒํ™ฉ ์ด ์žˆ์Šต๋‹ˆ๊นŒ? npm install ๋ฐ yarn.lock

npm์—์„œ Yarn์œผ๋กœ ๋˜๋Š” Yarn์—์„œ npm์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์ด ์ƒ๊ฐ๋‚ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋งˆ์ฐฐ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ช…์‹ฌํ•ด์•ผ ํ•  ํ•œ ๊ฐ€์ง€๋Š” ๊ฒฝ๊ณ ์™€ ์˜ค๋ฅ˜๊ฐ€ ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ด์ง€ ์•Š๊ฑฐ๋‚˜ ์ ์–ด๋„ engine ํ•„๋“œ์™€๋Š” ๊ด€๋ จ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ ์ • ๋œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€์—†๋Š” ํ”„๋กœ์ ํŠธ๋Š” ๊ฒฝ๊ณ ๋ฅผ ์ธ์‡„ ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ณ ์ • ๋œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ์„ ํƒํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ package.json์„ ๊ตฌ์„ฑ ํ•  ๋•Œ๊นŒ์ง€ ํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ ์ž์œ ๋กญ๊ฒŒ ์ „ํ™˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—”์ง„ ํ•„๋“œ์˜ ๋˜ ๋‹ค๋ฅธ ์žฅ์ ์€ ์–ด๋–ค ๋ฒ„์ „์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ํ™•์‹คํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋”˜๊ฐ€์—์„œ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ์ด ์‹œ์Šคํ…œ์—์„œ๋Š” ์ผ๋ฐ˜ ์›Œํฌ ํ”Œ๋กœ์˜ ์ผ๋ถ€๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—”์ง„ ํ•„๋“œ์˜ ๋˜ ๋‹ค๋ฅธ ์žฅ์ ์€ ์–ด๋–ค ๋ฒ„์ „์˜ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ํ™•์‹คํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋”˜๊ฐ€์—์„œ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ์ด ์‹œ์Šคํ…œ์—์„œ๋Š” ์ผ๋ฐ˜ ์›Œํฌ ํ”Œ๋กœ์˜ ์ผ๋ถ€๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

engine ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด engines ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? engine ์ฐธ์กฐํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์นœ๋‹ค๋ฉด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

engines ํ•„๋“œ์—์„œ ๋ฒ„์ „ ์ง€์ •์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. https://devcenter.heroku.com/articles/nodejs-support#specifying -an-npm-version

์ „์˜:

  "engines": {
    "npm": "5.6.x"
  }

์‚ฌ์šฉํ•  ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ์šฐ๋ ค ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์˜ค๋Š˜๋‚ ์˜ ๋ชจ์Šต : ์‚ฌ์†Œํ•œ ์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ npm ๋ฐ yarn ๋‘˜ ๋‹ค ์ •์˜ํ–ˆ๊ฑฐ๋‚˜ npm ๋ฒ„์ „์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ yarn.lock ์žˆ์Šต๋‹ˆ๋‹ค. npm ๋ฐ yarn ์˜ ํ–ฅํ›„ ๋ฒ„์ „์—์„œ๋Š”์ด๋ฅผ ์‹œํ–‰ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ž์ฃผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž๋Š” ์˜ค๋žซ๋™์•ˆ ํ˜„์žฌ ๋ฒ„์ „์„ ๊ณ„์† ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š”์ด ๊ตฌ์„ฑ์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ž์‹ ์˜ ๋จธ์‹ ์— nodejs.org์—์„œ ๋‹ค์šด๋กœ๋“œ ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ Node 0.10 ๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ค๋ž˜๋œ ์ƒ์šฉ๊ตฌ๋ฅผ ํฌํฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด Heroku์—์„œ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ํŒ€์€ ์ข…์ข… ์„ค์น˜ ํ•œ ๋ฒ„์ „์„ ์กฐ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์„ค์น˜ ํ•œ Node, npm ๋˜๋Š” ์–€์˜ ๋ฒ„์ „์€ ์ข…์ข… ๊ทธ๋“ค์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๋˜๋Š” ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ณ ์žฅ ๋‚˜์„œ ๋‹ค์‹œ ์„ค์น˜ํ•˜๋„๋ก ๊ฐ•์š”ํ–ˆ์„ ๋•Œ ์ตœ์‹  ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด์ƒ์ ์ด๋ผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ npm / yarn ์‚ฌ์šฉ์ž๊ฐ€ ์ดˆ๋ณด์ž์ด๋ฉฐ ์ด๊ฒƒ์€ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์ƒˆ๋กœ์šด ์žฅ์• ๋ฌผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ : "์˜ˆ์ œ hello-world ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณต์ œํ•˜๊ณ  https://nodejs.org ์—์„œ Node๋ฅผ ๋‹ค์šด๋กœ๋“œํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค."

์ฆ‰, ๋„๊ตฌ๊ฐ€ ์—„๊ฒฉํ•œ ๋ฒ„์ „์„ ์ ์šฉํ•˜๊ณ  engines ๊ธฐ๋กํ•˜๋ฉด ์‚ฌ๋ž‘ํ•˜๊ณ , ์‚ฌ๋ž‘ํ•˜๊ณ , ์‚ฌ๋ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งค์ผ ๋ณด๊ฒŒ๋˜๋Š” ๋งŽ์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ›จ์”ฌ ๋” ํฐ ๋ณ€ํ™”์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค.

์ฆ‰, ๋„๊ตฌ๊ฐ€ ์—„๊ฒฉํ•œ ๋ฒ„์ „์„ ์ ์šฉํ•˜๊ณ  ์—”์ง„์— ๊ธฐ๋กํ•˜๋ฉด ์‚ฌ๋ž‘ํ•˜๊ณ  ์‚ฌ๋ž‘ํ•˜๊ณ  ์‚ฌ๋ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งค์ผ ๋ณด๊ฒŒ๋˜๋Š” ๋งŽ์€ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ›จ์”ฌ ๋” ํฐ ๋ณ€ํ™”์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค.

AFAIK Yarn์€์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š๋Š” ํ•œ์ด ํ•„๋“œ๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŒ€์€ ์ข…์ข… ์„ค์น˜ ํ•œ ๋ฒ„์ „์„ ์กฐ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ์„ค์น˜ ํ•œ Node, npm ๋˜๋Š” ์–€์˜ ๋ฒ„์ „์€ ์ข…์ข… ๊ทธ๋“ค์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๋˜๋Š” ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ณ ์žฅ ๋‚˜์„œ ๋‹ค์‹œ ์„ค์น˜ํ•˜๋„๋ก ๊ฐ•์š”ํ–ˆ์„ ๋•Œ ์ตœ์‹  ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Yarn์˜ ๋™์ผํ•œ ์ฃผ์š” ๋ฒ„์ „์—์„œ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— Yarn์„ ์‚ฌ์šฉํ•  ๋•Œ ๋งค์šฐ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ด์ƒ์ ์ด๋ผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ npm / yarn ์‚ฌ์šฉ์ž๊ฐ€ ์ดˆ๋ณด์ž์ด๋ฉฐ ์ด๊ฒƒ์€ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์ƒˆ๋กœ์šด ์žฅ์• ๋ฌผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Yarn (๋ฐ ์•„์ด๋””์–ด๊ฐ€ ๋งˆ์Œ์— ๋“ค๋ฉด npm)์ด engines ํ•„๋“œ์— "yarn": "^<current_version>" ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋„ˆ๋ฌด ๋งŽ์€ ๋งˆ์ฐฐ์—†์ด ์•ˆ์ „์„ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? yarn init , yarn import ํ•˜๊ฑฐ๋‚˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋งŒ๋“ค ๋•Œ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Yarn์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด์ง€๋งŒ ๊ฐ€์žฅ ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์€ package-lock.json ํŒŒ์„œ๋ฅผ Yarn์— ์ถ”๊ฐ€ํ•˜๊ณ  ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ yarn.lock ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ตœ์ข… ๋ชฉํ‘œ๋Š” Yarn๊ณผ npm๊ฐ„์— ํ•˜๋‚˜์˜ ์ž ๊ธˆ ํŒŒ์ผ ํ˜•์‹์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@thatlittlegit https://github.com/yarnpkg/yarn/pull/5745 ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. (npm์€ ์—ญ์œผ๋กœ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์ž‘์—…์ค‘์ธ ์ž ๊ธˆ ํŒŒ์ผ์˜ ์ข…๋ฅ˜ ๋‚˜ ์„ ํƒํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์œ„์น˜์—์žˆ๊ฒŒ๋ฉ๋‹ˆ๋‹ค.)

์ถ”๊ฐ€ ํŽธ์ง‘ : ๋‹จ์ผ ์ž ๊ธˆ ํŒŒ์ผ ํ˜•์‹์€ ์ž ๊ธˆ ํŒŒ์ผ ํ˜•์‹๊ฐ„์— ์„œ๋กœ ๋‹ค๋ฅธ ์žฅ๋‹จ์ ์ด ์žˆ๊ณ  ์–ด๋–ค ํ˜•์‹์ด ๊ฐ€์žฅ ์ข‹์€์ง€์— ๋Œ€ํ•œ ํ•ฉ์˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‘ ๋„๊ตฌ๊ฐ€ ์„œ๋กœ์˜ ์ž ๊ธˆ ํŒŒ์ผ์„ ์„œ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ ์™ธ์—๋„ ๋‹จ์ผ ์ผ๋ฐ˜ ์†”๋ฃจ์…˜์œผ๋กœ ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ์‚ฌ์šฉ์ž ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋” ์ž˜ ์ถฉ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ์ ˆ์ถฉ์•ˆ์„ ๋งŒ๋“œ๋Š” ์—ฌ๋Ÿฌ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋งŽ์€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@BYK ์—”์ง„ ํ•„๋“œ์˜ ๋™์ž‘์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ก์ด ์—ฌ๊ธฐ์— ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

npm @ 1 ๋ฐ npm @ 2 ์—๋Š” engine ํ•„๋“œ ์™ธ์— engineStrict ๋ผ๋Š” package.json engine ์žˆ์Šต๋‹ˆ๋‹ค. engineStrict ๊ฐ€ true์ด๋ฉด engine ํ•„๋“œ๊ฐ€ _resolution constraint_๋กœ ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ ๋ฒ„์ „ ๋ชฉ๋ก์— semver ๋ฒ”์œ„๋ฅผ ์ ์šฉํ•˜๊ธฐ ์ „์— ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์—”์ง„์ด์žˆ๋Š” ๋ฒ„์ „์ด ํ•„ํ„ฐ๋ง๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹น์‹ ์ด ๊ฐ™์€ ๊ฒƒ๋“ค์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฒƒ์ž…๋‹ˆ๋‹ค npm install foo ์–ป์„ [email protected] ๊ฒฝ์šฐ์—๋„ [email protected] ๊ฒฝ์šฐ ๊ฒŒ์‹œ ๋œ [email protected] ํ”Œ๋žซํผ์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด _seems_ ๋ฐ”๋žŒ์งํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋งค์šฐ ํ˜ผ๋ž€ ์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์›น ์‚ฌ์ดํŠธ์˜ ๋ฌธ์„œ๋Š” ์ตœ์‹  ๋ฒ„์ „์— ๋Œ€ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

engineStrict ๊ฐ€ false์ด๋ฉด ์—”์ง„ ํ•„๋“œ์— ๊ด€๊ณ„์—†์ด ํ•ด๊ฒฐ์ด ์ˆ˜ํ–‰๋˜๊ณ  ๊ฒฐ๊ณผ๊ฐ€ ํ˜ธํ™˜๋˜์ง€ ์•Š์œผ๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

package.json ์†์„ฑ๊ณผ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ๋ชจ๋“  ํŒจํ‚ค์ง€์— ์ ์šฉํ•˜๋Š” engine-strict ๊ตฌ์„ฑ ์˜ต์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

npm @ 3 ๋ถ€ํ„ฐ engineStrict package.json ์†์„ฑ์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ  engine-strict ๊ตฌ์„ฑ ์˜ต์…˜์˜ ๋™์ž‘์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ config ์˜ต์…˜์ด ํ•ด์ œ ๋œ ๊ฒฝ๊ณ ๋ฅผ ์˜ค๋ฅ˜๋กœ ์ „ํ™˜ํ•˜์ง€๋งŒ ํ•ด๊ฒฐ์—๋Š” ์˜ํ–ฅ์„์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

engine ํ•„๋“œ๋Š” ์ตœ์ƒ์œ„ ํ”„๋กœ์ ํŠธ์—๋งŒ ์ ์šฉ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ „ ์ด์ ์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. yarn ์—”์ง„ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋„์ž…ํ•˜๋ฉด ์ข…์†์„ฑ์ด yarn์œผ๋กœ ๋งŒ ์„ค์น˜ ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•˜๋ฉฐ ์—ฌ๊ธฐ์— ํ•ด๋‹น๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ yarn ๋ฆด๋ฆฌ์Šค๋ถ€ํ„ฐ package-lock.json ๋ฅผ yarn.lock ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ๊ฒฝ๊ณ  / ์˜ค๋ฅ˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณด๋Š” ๋ฐฉ์‹ : ๋‹จ์ผ ํŒจํ‚ค์ง€์— package-lock.json ๊ณผ yarn.lock ํŒŒ์ผ์ด ๋ชจ๋‘ ์žˆ์–ด์•ผํ•˜๋Š” ํƒ€๋‹นํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ณ ์˜๋กœ ์ด๊ฒƒ์„ ์›ํ•˜๋Š” ์ƒํ™ฉ์ด ์•„๋‹Œ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋ฌธ์ œ๋กœ ๋ณด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค (๋ฌผ๋ก  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
์œ„์˜ @iarna ์„ค๋ช…์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด engine ํ•„๋“œ๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์‚ฌ์šฉ์ค‘์ธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ๋ช…์‹œ ์ ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ์ข‹์€ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ IMO๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ•˜๋‚˜์˜ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋ณ€ํ™˜ํ•˜๋„๋ก ์ดˆ๋Œ€ํ•˜๋Š” ์ž์„ธํ•œ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‹ค ์ธก์—์„œ๋Š” ๊ฒฝ๊ณ  (์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด)๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์˜ค๋ฅ˜๋กœ ๋ณ€๊ฒฝ ๋  ๋‹ค์Œ ๋ฉ”์ด์ € ๋ฒ„์ „๊นŒ์ง€ ์ฒœ์ฒœํžˆ์ด ๋™์ž‘์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค (๋‘ ํŒŒ์ผ์„ ๋ชจ๋‘ ํ—ˆ์šฉํ•˜๋Š” ๊ตฌ์„ฑ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Œ). ๋™์‹œ์— ์กด์žฌ).

๋‹ค๋“ค ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”? @jmorrell , @BYK , @arcanis , @iarna?

์–ด๋–ค ์ข…๋ฅ˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์–ด๋–ค ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ด์ƒํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ •์ •ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ Yarn์€ ๋Œ€๋ถ€๋ถ„ ์ตœ์ข… ์‚ฌ์šฉ์ž ์„ ํ˜ธ๋„์— ๋‹ฌ๋ ค์žˆ๋Š” ๋“œ๋กญ ์ธ ๋Œ€์ฒดํ’ˆ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. Yarn์€ ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€์œผ๋กœ NPM์„ ์™„์ „ํžˆ ๋Œ€์ฒดํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๊ณต์กดํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๊นŒ?

@BrainBacon ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ์ž ๊ธˆ ํŒŒ์ผ์„ ์กด์ค‘ํ•˜๊ณ  ๋™์ผํ•œ ์˜๋ฏธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์ผํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž ๊ธด ์ข…์†์„ฑ์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์— yarn.lock ์žˆ๊ณ  ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ npm install ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์‚ฌ์šฉ์ž๋Š” ์—ฌ์ „ํžˆ ๋‹ค๋ฅธ ์ข…์†์„ฑ ์„ธํŠธ๋กœ ๋๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์ข… ์‚ฌ์šฉ์ž์˜ ์„ ํ˜ธ๋„์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋˜ํ•œ ํ”„๋กœ์ ํŠธ์— ๋‘ ๊ฐœ์˜ ์ž ๊ธˆ ํŒŒ์ผ์ด์žˆ๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋™์ผํ•œ ์˜์กด์„ฑ ํŠธ๋ฆฌ๋กœ ํ•ด๊ฒฐ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์œผ๋ฉฐ ์–ด๋–ค ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ• ์ง€ ๊ธฐ์—ฌ์ž์—๊ฒŒ ๋ถˆ๋ถ„๋ช…ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

(๋“œ๋กญ ์ธ ๊ต์ฒด ๋ถ€ํ’ˆ์€ npm์ด ์ž ๊ธˆ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ํŠนํžˆ ์‚ฌ์‹ค์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ณณ์—์„œ ์žƒ์–ด ๋ฒ„๋ฆด ์ •๋ณด๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. # 5745๊ฐ€ ์‹ค์ œ๋กœ Yarn์ด package-lock.json ๊ธฐ๋ฐ˜์œผ๋กœ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์—ฌ์ „ํžˆ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค

๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ •์ •ํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ Yarn์€ ๋Œ€๋ถ€๋ถ„ ์ตœ์ข… ์‚ฌ์šฉ์ž ์„ ํ˜ธ๋„์— ๋‹ฌ๋ ค์žˆ๋Š” ๋“œ๋กญ ์ธ ๋Œ€์ฒดํ’ˆ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

Yarn์€ ๋…ธ์ถœ ๋œ API ์ธก๋ฉด์—์„œ ์ง์ ‘ ๋“œ๋กญ ์ธ ๋Œ€์ฒดํ’ˆ์ด ์•„๋‹™๋‹ˆ๋‹ค. yarn add <pkg> ๋Œ€ npm install <pkg> ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ผ์„ ๋‹ค๋ฅด๊ฒŒํ•˜๋Š” ๋ช…๋ฐฑํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋™์ผํ•œ ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ๊ฐ–๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์ง€๋งŒ ๊ฒฐ๊ตญ์—๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋„๊ตฌ์ด๋ฉฐ ๋•Œ๋กœ๋Š” ๋™์ผํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

yarn.lock ๋Œ€ package-lock.json ๋Š” ์ด๋Ÿฌํ•œ ์ฐจ์ด์  ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ Yarn์ด๋‚˜ npm์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ผ ์‚ฌ์šฉ์— ๊ด€์‹ฌ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์›์‚ฌ ์ชฝ์—์„œ๋Š” ๊ฒฝ๊ณ  (์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด)์™€ ํ•จ๊ป˜ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์œผ๋กœ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ :

WARN Your project seem to contain lock files (package-lock.json, shrinkwrap.json) generated
WARN by other tools than Yarn. It is advised not to mix package managers, in order to avoid
WARN resolution inconsistencies caused by desynchronized lock files.

๋ˆ„๊ตฐ๊ฐ€ PR์„ ์—ด๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ?

๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” PR์„ ์—ด์–ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. :)

package-lock.json + yarn import ์ด (๊ฐ€) ์กด์žฌํ•  ๋•Œ ์›ํ•˜๋Š” ์ตœ์ข… ์†”๋ฃจ์…˜์ด ์—ฌ๊ธฐ์— ์œ ์šฉํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๊นŒ? ๋‚ด ์ดํ•ด๋Š” @iarna ๊ฐ€ ๊ฐ ๋„๊ตฌ๊ฐ€ ์ž๋™์œผ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ˜๋Œ€ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ œ๊ฑฐ / ๋ณ€ํ™˜ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด๋Š ์ชฝ์˜ ์†”๋ฃจ์…˜์ด๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์ƒ๋‹นํ•œ ๊ฐœ์„ ์ด ๋  ๊ฒƒ์ด์ง€๋งŒ, yarn๊ณผ npm์ด ๋™์ผํ•œ ์ „๋žต์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@jmorrell- ๋‚ด ์ดํ•ด๋Š” ์—ฌ๊ธฐ์„œ ์ž๋™ ๋ณ€ํ™˜์ด ๋‚˜์œ ์ƒ๊ฐ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฃผ๋กœ ๋‘ ์ž ๊ธˆ ํŒŒ์ผ ์‚ฌ์ด์˜ ๋ธํƒ€๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ๊ธฐ๊ฐ€ ์–ด๋ ต ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์˜ˆ : ๊ฐœ๋ฐœ์ž๋กœ์„œ ์œ„์˜ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ์ด ์–ธ์ œ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€, ๊ธฐ๋ณธ ์ž ๊ธˆ ํŒŒ์ผ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์€ ํŒจํ‚ค์ง€๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํŒŒ์•…ํ•œ ๋‹ค์Œ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. import ์˜ต์…˜์„ ์ฐธ์กฐ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” npm ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฒƒ์— ๋™์˜ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค?

์ด์ƒ์ ์œผ๋กœ๋Š”์ด ๊ฒฝ๊ณ ๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ƒํ™ฉ (์–ดํœ˜์— ๋Œ€ํ•ด ํ™•์‹คํ•˜์ง€ ์•Š์Œ)์ด๊ณ  ํ–ฅํ›„ ์›์‚ฌ ๋ฒ„์ „์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋ผ๋Š” ๋‚ด์šฉ์„ ํฌํ•จํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋ฌธ์„œ์™€์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋งํฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @arcanis- ์‹คํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐ warning ํ–‰๋™์„ ์œ ์ง€ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ž ๊ธˆ ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ ๊ฐœ์žˆ์„ ๋•Œ ๋‘ ๋„๊ตฌ ๋ชจ๋‘ error ๋ฐœํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๋Š”์ด ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ "์ž‘์ง€๋งŒ"์ด ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์‹ ์†ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (์ฐธ์กฐ๋กœ ๊ฐ€์ ธ ์˜ค๊ธฐ ๋˜๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฐ€์ ธ ์˜ค๊ธฐ). .

@arcanis npm add <pkg> ์€ ์™„๋ฒฝํ•˜๊ฒŒ ์œ ํšจํ•˜๋ฉฐ Yarn์ดํ•˜๋Š” ์ผ์„ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ‘ผ

pkglock๊ณผ yarnlock์— ๊ด€ํ•œ ํ•œ package-lock.json ์˜ ์›๋ž˜ ์˜๋„๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ํ•„์š”๋กœํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ํ˜•์‹์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ npm@6 ์˜ pkglock์€ ๋ชจ๋“  ๊ด€๋ จ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ ๋œ ์ „์ฒด ํŠธ๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๋ฏ€๋กœ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ yarn.lock์œผ๋กœ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋ณ€ํ™˜ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. _ ์˜๋„์ ์œผ๋กœ _ (์˜ˆ : requires ํ•„๋“œ) ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ Yarn ๋ฐ pnpm ํŒ€ ๋ชจ๋‘์—๊ฒŒ ํ”ผ๋“œ๋ฐฑ์„ ์š”์ฒญํ•˜์—ฌ ์šฐ๋ฆฌ๊ฐ€ ํ•œ ์ž‘์—…์ด ๋‘˜ ๋‹ค ๊ฐ€์ ธ ์˜ค๊ธฐ ๊ฐ€๋Šฅํ•œ ์ž ๊ธˆ ํŒŒ์ผ๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋Œ€์ฒด ์˜ต์…˜์œผ๋กœ. yarn.lock์€ ์•ˆํƒ€๊น๊ฒŒ๋„ ์†์‹ค์ด์žˆ๋Š” ๋ถ€๋ถ„ ์ง‘ํ•ฉ์ด๋ฏ€๋กœ ์—ญ์€ ์‚ฌ์‹ค์ด ์•„๋‹ˆ์ง€๋งŒ ์–ด์จŒ๋“  ๊ฐ€์ ธ ์˜ค๊ธฐ ์œ„ํ•ด ๋ฌผ๊ฑด์„ ์ถ”๊ฐ€ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. npm์€ Yarn์ด ๊ณ„์‚ฐ ํ•œ ํŠธ๋ฆฌ ๋ชจ์–‘์„ ๋”ฐ๋ฅด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค (Yarn๊ณผ ๋‹ฌ๋ฆฌ).

์‹ค์ œ๋กœ npm @ 6 ์˜ pkglock์€ ๋ชจ๋“  ๊ด€๋ จ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ ๋œ ์ „์ฒด ํŠธ๋ฆฌ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ yarn.lock์œผ๋กœ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋ณ€ํ™˜ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค (๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ์ฐฉ๊ฐํ–ˆ์„ ์ˆ˜๋„์žˆ๋‹ค. ์–ด๋–ค ์˜คํ•ด๋ผ๋„ ์ž์œ ๋กญ๊ฒŒ ์ง€์ ํ•œ๋‹ค). Yarn ์ž ๊ธˆ ํŒŒ์ผ์€ ๋‹จ์ผ ๋ฒ„์ „์œผ๋กœ ํ™•์ธ๋˜๋Š” ๋‹ค์ค‘ ๋ฒ”์œ„๋ฅผ ์„ค๊ณ„ ์ƒ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. lodash@^1.0.0 ์— ๋”ฐ๋ผ ๊ฐ๊ฐ ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ๋ชจ๋‘ ์ •ํ™•ํžˆ ๋™์ผํ•œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ตœ์ ํ™” ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž ๊ธˆ ํŒŒ์ผ์—์„œ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค.

npm ์ž ๊ธˆ ํŒŒ์ผ์€ ํŠธ๋ฆฌ์ด๋ฏ€๋กœ์ด ์†์„ฑ์€ ๋ณด์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ ์—ฌ๋Ÿฌ ๋™์ผํ•œ ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฅธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋…ธ๋“œ ํ™•์ธ ๊ทœ์น™์„ ํ™œ์šฉํ•˜์—ฌ ์•ฝ๊ฐ„ ๋” ๋‚˜์€ ์ตœ์ ํ™”๋ฅผ ํ—ˆ์šฉ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค). ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ package-lock.json-> yarn.lock ๋ณ€ํ™˜์€ ์†์‹ค์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ๋ณ€ํ™˜์œผ๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋‹ค๋ฅธ ์„ ํƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— Yarn ์ž ๊ธˆ ํŒŒ์ผ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๋ฌธ์ œ์—†์ด package-lock.json์œผ๋กœ ๋ณ€ํ™˜ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ์˜ ๊ทœ์น™์€ ๋” ์—„๊ฒฉํ•œ ํ•˜์œ„ ์ง‘ํ•ฉ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (์šฐ๋ฆฌ์˜ ๋ณ‘ํ•ฉ ๋œ ๋ฒ”์œ„๋Š” ์†์‹ค์—†์ด ํŠธ๋ฆฌ๋กœ ๋ณ€ํ™˜ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŠธ๋ฆฌ๋Š” ์†์‹ค์—†๋Š” ๋ณ‘ํ•ฉ ๋œ ๋ฒ”์œ„). ์ €๋Š” ์ข…์†์„ฑ ํŠธ๋ฆฌ ์ž์ฒด์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ํ•„๋“œ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์†”์งํžˆ ๋งํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ ๋˜‘๊ฐ™์€ ๋ง์„ํ•˜๋Š”์ง€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ง์„ํ•˜๋Š”์ง€ ์™„์ „ํžˆ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์ƒํ™ฉ์„ ์กฐ๊ธˆ ๋ช…ํ™•ํžˆํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ƒ์ ์œผ๋กœ๋Š”์ด ๊ฒฝ๊ณ ๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ƒํ™ฉ (์–ดํœ˜์— ๋Œ€ํ•ด ํ™•์‹คํ•˜์ง€ ์•Š์Œ)์ด๊ณ  ํ–ฅํ›„ ์›์‚ฌ ๋ฒ„์ „์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋ผ๋Š” ๋‚ด์šฉ์„ ํฌํ•จํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋ฌธ์„œ์™€์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋งํฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@imsnif ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋น„ CI ํ™˜๊ฒฝ์—์„œ ์˜ค๋ฅ˜๋ผ๊ณ  ํ™•์‹ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (CI์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด ์—†์Šต๋‹ˆ๋‹ค-์ด๊ฒƒ์€ ํ™•์‹คํžˆ ์˜ค๋ฅ˜๋ฅผ ์œ ๋ฐœํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค). ๋‚˜๋Š” ๋‹จ์ˆœํžˆ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ๊ทธ๊ฒƒ์ด ์ด์ƒ์ ์ด์ง€ ์•Š์€ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒฝ๊ณ ์— ๋จธ๋ฌผ๊ธฐ๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์ ์€ @jmorrell ์ด ๊ฒฝ๊ณ ๊ฐ€ ์ถฉ๋ถ„ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜์žˆ๋Š” ์ •ํ™•ํ•œ ์ง€ํ‘œ๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜

์—ฌ๊ธฐ์„œ ์›ํ•˜๋Š” ์ตœ์ข… ์†”๋ฃจ์…˜์€ package-lock.json์ด ์กด์žฌํ•˜๊ณ  ์‹ค์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์œ ์šฉํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๊นŒ?

๋„ค, "CI์—์„œ ์˜ค๋ฅ˜๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ"๋ชจ๋“œ *์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•ฉ๋ฆฌ์ ์ธ ์ฒซ ๋‹จ๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

(* ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. # 5773 Yarn 2.0 WG์—์„œ ์–ธ๊ธ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.)

@arcanis - ํŒŒ์ผ ์ž ๊ธˆ ์†Œ๊ฐœ : ๋‚˜๋Š” @zkat๊ฐ€ ์ฐธ์กฐ ๋ฌด์Šจ ์ƒ๊ฐ (ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๊ฑฐ๋‚˜ ์˜คํ•ดํ•˜๋Š” ๊ฒฝ์šฐ ์˜ฌ๋ฐ”๋ฅธ ๋‚˜ @zkatํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค) ์ฆ‰ package-lock.json ์ž˜ ๋…ผ๋ฆฌ์  ํŠธ๋ฆฌ๋กœ ๊ฐ™์€ ๋ฌผ๋ฆฌ์  ์ €์žฅํ•˜๋Š” ๋™์•ˆ yarn.lock ๋Š” ๋…ผ๋ฆฌ ํŠธ๋ฆฌ ๋งŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด package-lock.json => yarn.lock => package-lock.json ํ•˜๋ฉด ๋ฌผ๋ฆฌ์  ํŠธ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ IMO๋Š” ๊ดœ์ฐฎ์ง€ ๋งŒ ์˜ˆ์™ธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆ๋“ค ์ข…์†์„ฑ.

๋‚ด ๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์€ ๋‘ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๋ชจ๋‘ ๋ฌผ๋ฆฌ์  ํŠธ๋ฆฌ ๊ตฌ์„ฑ์„ ๋™๊ธฐํ™”ํ•จ์œผ๋กœ์จ ์ด์ต์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณธ ๊ฒƒ์—์„œ ์šฐ๋ฆฌ๋Š” ๋ฌผ๋ฆฌ์  ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž˜ ์ •์˜ ๋œ ๊ทœ์น™์„ ์ถ”์ถœํ•˜๊ณ  ๋‘˜ ๋‹ค (์ด์ƒ์ ์œผ๋กœ๋Š” ๋ชจ๋“  ์ดํ•ด ๊ด€๊ณ„์ž๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ)์ด๋ฅผ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‘˜ ๋‹ค ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. yarn ๊ฐ€ ๋ฒˆ๋“ค๋กœ ๋ฌถ์ธ ์˜์กด์„ฑ๊ณผ ํ•จ๊ป˜ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ผ๋ถ€ ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ๊ฐ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ณ ์œ  ํ•œ ํŠน์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค. (ํ™•์‹คํžˆ, ๋‚˜๋Š”์ด ํ† ๋ก ์„ ์ฒ˜์Œ ์ ‘ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž ์ž๋Š” ๊ฐœ๋ฅผ ๊นจ์šฐ๋ฉด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค).

ํ•˜์ง€๋งŒ ๋‹น๋ฉดํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด :
CI ์ˆ˜์ค€์—์„œ์ด๋ฅผ ํฌ์ฐฉํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ๋งค์šฐ ์ค‘์š”ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž์˜ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ณด๋‹ค (ํ‰๊ท ์ ์œผ๋กœ) ๋””๋ฒ„๊ทธํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ๋” ์–ด๋ ค์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ์ž๊ฐ€ ์ž˜๋ชป๋œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•œ ๋‹จ๊ณ„๋„ ๋” ๋‚˜์•„ ๊ฐ€์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ "์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๊ณ  ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœ ํ•œ ํ›„ ์—ญ ์ถ”์ ์„ ์ˆ˜ํ–‰ ํ•œ ํ›„ CI์—์„œ ํฌ์ฐฉํ•˜๋Š” ๋Œ€์‹  ์—„์ฒญ๋‚œ ์‹œ๊ฐ„์„ ์ ˆ์•ฝ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฒฝ๊ณ  (์•ž์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด)๋Š” ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ 0 ์ธ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌด์‹œํ•˜๋Š” ๊ฒฝํ–ฅ์ด์žˆ๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ๊ฒฝ์šฐ์— ์‚ผ์ผœ ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?

๋˜ํ•œ-์œ„์—์„œ ์„ค๋ช…ํ•œ ์ƒํ™ฉ์—์„œ "์™ธ๋ถ€"์ž ๊ธˆ ํŒŒ์ผ์ด .gitignore ์œ„์น˜ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ CI๊ฐ€ ์ด์— ๋Œ€ํ•ด ์•Œ ๊ธฐํšŒ์กฐ์ฐจ ์–ป์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฉ์ฒญํ•œ ๊ฐœ๋ฐœ์ž๋กœ์„œ "๊ธ€์Ž„, ๋‚ด ๋กœ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๋ชจํ˜ธํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ CI๋ฅผ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋งˆ ๋‚ด ์ชฝ์˜ ๋กœ์ปฌ ๋ฌธ์ œ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„ ๊ธ€์Ž„"๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฝ๊ณ  (์•ž์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด)๋Š” ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ 0 ์ธ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌด์‹œํ•˜๋Š” ๊ฒฝํ–ฅ์ด์žˆ๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ๊ฒฝ์šฐ์— ์‚ผ์ผœ ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์š”์ ์€ ์ •๋ณด์— ์ž…๊ฐ ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜์žˆ๋Š” ์ผ๋ถ€ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ์ด ํ™•์ธ์€ ๋ฐ์ดํ„ฐ์— ์˜ํ•ด ๋’ท๋ฐ›์นจ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋งฅ๋ฝ์—์„œ ์‚ฌ๋žŒ๋“ค์˜ ์ž‘์—… ํ๋ฆ„ ์„ ๊นจ๋œจ๋ฆด ๋” ๊ธ‰์ง„์  ์ธ ์˜ต์…˜์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์•ฝ๊ฐ„ ํ—›๋˜๊ณ  ์ž ์žฌ์ ์œผ๋กœ ํ•ด๋กœ์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ๐Ÿ˜•

๋˜ํ•œ "ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ๋ฅผ ๊ฐ„๊ณผํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๊ด€๋ฆฌ์ž์™€ ์‚ฌ์šฉ์ž ๋ชจ๋‘์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด Yarn ํ”„๋กœ์ ํŠธ์—์„œ npm 6์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์—†๋‹ค๋ฉด (๋˜๋Š” ๋ฐ˜๋Œ€๋กœ npm ํ”„๋กœ์ ํŠธ์—์„œ Yarn์„ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์—†๋‹ค๋ฉด) ์ข‹์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด ๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์€ ๋‘ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๋ชจ๋‘ ๋ฌผ๋ฆฌ์  ํŠธ๋ฆฌ ๊ตฌ์„ฑ์„ ๋™๊ธฐํ™”ํ•จ์œผ๋กœ์จ ์ด์ต์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์ฃผ์ œ์ด์ง€๋งŒ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Yarn์ด npm์ด๋ผ๋Š” ์˜คํ•ด๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ „์šฉ ๋ช…๋ น์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์ ธ ์˜ค๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋‘ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํƒ€์‚ฌ ํ˜•์‹์—์„œ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜ (๋˜๋Š” ์ฝ๋Š”)ํ•˜๋Š” ๊ฒƒ์€ ์žฌ๋‚œ์„์œ„ํ•œ ๋ ˆ์‹œํ”ผ์ž…๋‹ˆ๋‹ค.

  • ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค์Œ์— ํŒจํ‚ค์ง€๊ฐ€ ์ถ”๊ฐ€ / ์ œ๊ฑฐ ๋  ๋•Œ ๋ฌผ๋ฆฌ์  ํŠธ๋ฆฌ๊ฐ€ ์†์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์— ๊ณ ์œ  ํ•œ ๊ธฐ๋Šฅ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์ž‘์—… ๊ณต๊ฐ„, ํ•ด์ƒ๋„ ์žฌ์ •์˜, ๋งํฌ :, ...).

๋‚ด ์š”์ ์€ ์ •๋ณด์— ์ž…๊ฐ ํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜์žˆ๋Š” ์ผ๋ถ€ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ์ด ํ™•์ธ์€ ๋ฐ์ดํ„ฐ์— ์˜ํ•ด ๋’ท๋ฐ›์นจ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋งฅ๋ฝ์—์„œ ์‚ฌ๋žŒ๋“ค์˜ ์ž‘์—… ํ๋ฆ„์„ ๊นจ๋œจ๋ฆด ๋” ๊ธ‰์ง„์  ์ธ ์˜ต์…˜์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์•ฝ๊ฐ„์˜ ํ—›๋œ ์ผ์ด๊ณ  ์ž ์žฌ์ ์œผ๋กœ ํ•ด๋กœ์šด ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค-๋ฐ์ดํ„ฐ๋กœ ๋’ท๋ฐ›์นจ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ๊ธฐ์—์„œ ํ™•์‹คํžˆ ์ถ”์ธกํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (์ด๊ฒƒ์„ ๊ฐ•์กฐํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค). ๊ฒฝ๊ณ  ์ˆ˜์ •์˜ ์ถ”์„ธ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ผ๋งˆ๋‚˜ ํŽธ๋ฆฌํ•œ ์ง€, ๋” ํŽธ๋ฆฌํ•œ ์†”๋ฃจ์…˜์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ํŒŒ์•…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•œ๋‹ค๋ฉด "Heroku ๋ฐฐํฌ ์˜ค๋ฅ˜์œจ์—๋Š” ์ „ํ˜€ ๋ณ€ํ™”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ๊ฒฐ๊ณผ ์™ธ์—๋Š” ํฌ๊ด„์  ์˜ค๋ฅ˜ ์†”๋ฃจ์…˜์œผ๋กœ ์šฐ๋ฆฌ๋ฅผ ์ด๋Œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์˜ ์›Œํฌ ํ”Œ๋กœ์šฐ๋ฅผ ๊นจ์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ์ด ์ƒํ™ฉ์ด ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ ํ•˜๋Š” ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ์™€ ํ•จ๊ป˜ 2.0.0 ์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์˜ค๋ฅ˜๋ฅผ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ --force ๋˜๋Š” config ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์ด ๋™์ž‘์„ ์žฌ์ •์˜ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. (๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๋ฌธ์ œ๋ฅผ ์‹œ๋„ํ•˜๋Š” ๊ฒƒ๋„ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?)

์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์ฃผ์ œ์ด์ง€๋งŒ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Yarn์ด npm์ด๋ผ๋Š” ์˜คํ•ด๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ „์šฉ ๋ช…๋ น์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์ ธ ์˜ค๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ชจ๋‘ ๋‹ค ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํƒ€์‚ฌ ํ˜•์‹์˜ ์ž ๊ธˆ ํŒŒ์ผ์„ ์กฐ์šฉํžˆ ๋ณ€ํ™˜ (๋˜๋Š” ์ฝ๋Š”)ํ•˜๋Š” ๊ฒƒ์€ ์žฌ๋‚œ์˜ ๋น„๊ฒฐ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์ œ๊ฐ€ ๋‹ค๋ฃจ๊ณ  ์‹ถ์€ ์ค‘์š”ํ•œ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์ด ๋งํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์ฃผ์ œ์ด๋ฉฐ ๋‚˜๋Š” ๋Œ€ํ™”๋ฅผ ํƒˆ์„ ์‹œํ‚ค๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ๋ฌธ์ œ์—์„œ ๋…ผ์˜ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

์—ฌ๊ธฐ์—์„œ ๋Œ€ํ™”๊ฐ€ ๋‹ค์†Œ ํƒˆ์„ ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฏ€๋กœ ๋ช‡ ๊ฐ€์ง€ ์„ค๋ช…๊ณผ ์š”์•ฝ์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  1. Yarn๊ณผ npm์€ ๋‹ค๋ฅธ ํ•ด์ƒ๋„์™€ ๋ฌผ๋ฆฌ์  ํŠธ๋ฆฌ ์ƒ์„ฑ ์ „๋žต์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์€ ๋‘ ํ”„๋กœ์ ํŠธ๊ฐ€ ์กด์žฌํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค.
  2. yarn.lock ๋ฐ package-lock.json ํŒŒ์ผ์€ ๋ชจ๋‘ ํŠน์ • ๋ชฉํ‘œ๋ฅผ ์—ผ๋‘์—๋‘๊ณ  ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฉฐ ์ œ๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š” ํ•œ ์ด๋Ÿฌํ•œ ๋ชฉํ‘œ๋Š” ์™„์ „ํžˆ ์ผ์น˜ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ผ๋ถ€ ์ค‘๋ณต๋ฉ๋‹ˆ๋‹ค.
  3. ์ด๋Ÿฌํ•œ ๋ชฉํ‘œ์˜ ์ฐจ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ํ˜•์‹๋ณด๋‹ค ์šฐ์ˆ˜ํ•œ ํ˜•์‹์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์ ์„ ์ƒ์ถฉํ•ฉ๋‹ˆ๋‹ค.

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

๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ์— ๋Œ€ํ•œ ์Šน์ธ ๋ฐ ๊ฒฝ๊ณ ์™€ ํ•จ๊ป˜ ๋ณด์กด๋˜๋Š” ํ•ญ๋ชฉ๊ณผ ์†์‹ค ๋œ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ฐ ์ธก๋ฉด์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ํฐ ๊ฐ€์น˜๋กœ ์ œ๊ณต๋˜๋Š” ์ ์ ˆํ•œ ๋ณ€ํ™˜๊ณผ ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด์ œ์ด ๋ฌธ์ œ์˜ ์งˆ๋ฌธ ์€ ์‚ฌ์šฉ์ž๊ฐ€ yarn์„ ์‹คํ–‰ํ•  ๋•Œ ์ €์žฅ์†Œ์— ํŒจํ‚ค์ง€ ์ž ๊ธˆ ํŒŒ์ผ์ด์žˆ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ํ๋ฆ„ ์ด

์ž๋™ ๋ณ€ํ™˜์€ ์ž ์žฌ์ ์œผ๋กœ ์œ„ํ—˜ํ•˜๋ฉฐ ํƒˆ์ถœ๊ตฌ์—†์ด ์„ค์น˜์— ์‹คํŒจํ•˜๋ฉด ํŠน์ • ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ•ด๋ฅผ ๋ผ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ์ž ๊ธˆ ํŒŒ์ผ์„ ๊ฐ–๋Š” ๊ฒƒ์ด CI ๋ชจ๋“œ์— ์žˆ์Œ์„ ์•Œ๊ธฐ ์œ„ํ•ด yarn์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์„ ์„ค์ •ํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด "๋‚ด๊ฐ€ ๋ญ˜ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์œผ๋‹ˆ ์–ด๋–ค ๋ถˆ์ผ์น˜๋กœ๋ถ€ํ„ฐ ๋‚˜๋ฅผ ๋ณดํ˜ธํ•˜๋ ค๊ณ ํ•˜์ง€ ๋ง์•„ ์ค˜"๋ผ๊ณ  ๋งํ•˜๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.

์ƒ๊ฐ?

ํŒจํ‚ค์ง€ ์ž ๊ธˆ ํŒŒ์ผ์„ ๊ฐ–๋Š” ๊ฒƒ์ด CI ๋ชจ๋“œ์— ์žˆ์Œ์„ ์•Œ๊ธฐ ์œ„ํ•ด yarn์— ๋Œ€ํ•œ ๊ตฌ์„ฑ์„ ์„ค์ •ํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด "๋‚ด๊ฐ€ ๋ญ˜ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์œผ๋‹ˆ ์–ด๋–ค ๋ถˆ์ผ์น˜๋กœ๋ถ€ํ„ฐ ๋‚˜๋ฅผ ๋ณดํ˜ธํ•˜๋ ค๊ณ ํ•˜์ง€ ๋ง์•„ ์ค˜"๋ผ๊ณ  ๋งํ•˜๋Š” ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค.

@BYK- ์ข‹์€ ์†Œ๋ฆฌ์ž…๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์‚ฌํ•ญ : @arcanis๊ฐ€ ์—ฌ๊ธฐ์™€ ํ–ˆ๋“ฏ์ด ๊ตฌ์„ฑ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ non-ci ๋ชจ๋“œ์—์„œ ๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋Š” ํ‘ธ์‹œํ•˜๊ธฐ ์ „์— CI ๋นŒ๋“œ๊ฐ€ ์‹คํŒจ ํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋˜ํ•œ package-lock.json ์ด .gitignore ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด).

@imsnif ๊ฐ€ ์–ธ๊ธ‰ ํ•œ๋Œ€๋กœ @arcanis : pkglock์—๋Š” ํŠธ๋ฆฌ์˜ ๋…ผ๋ฆฌ์  ๋ฐ ๋ฌผ๋ฆฌ์  ๋ ˆ์ด์•„์›ƒ _both_๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต ์ œ๊ฑฐ ๋œ ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜๋Š” ํŠธ๋ฆฌ์˜ ๋…ผ๋ฆฌ์  ๋ฒ„์ „์„ ๋”ฐ๋ฅด๋ฉด ์„ค์น˜ ๋˜๋Š” ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ ๋…ผ๋ฆฌ๋ฅผ ์ „ํ˜€ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์—์„œ yarn.lock์„ ๊ตฌ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ํŠธ๋ฆฌ ์กฐํšŒ :)

NPM 5 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์—์„œ :

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๊ฐ„ ํ˜ธํ™˜์„ฑ์„์œ„ํ•œ ์ƒˆ๋กœ์šด ํ‘œ์ค€ํ™” ๋œ ์ž ๊ธˆ ํŒŒ์ผ ๊ธฐ๋Šฅ (package-lock.json)

NPM ํŒ€์€ package-lock.json ๋ฅผ ๋ฒ”์šฉ ์†”๋ฃจ์…˜์œผ๋กœ ๊ด‘๊ณ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ ์„ธ๋ ฅ์— (๊ธฐ์ˆ ์ ์œผ๋กœ) ํ•ฉ๋ฅ˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์ œ์•ˆํ•˜๊ณ  ์‹ถ์€ ํ•œ ๊ฐ€์ง€ ํ•ด๊ฒฐ์ฑ…์€ "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ package-lock.json ๋งŒ ์‚ฌ์šฉ"ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ NPM์ด ์ถ•์†Œ ํฌ์žฅ์—์„œ ์ž ๊ธˆ json ํŒŒ์ผ๋กœ "๋งˆ์ด๊ทธ๋ ˆ์ด์…˜"๋œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

NPM ํŒ€์€ package-lock.json์„ ๋ฒ”์šฉ ์†”๋ฃจ์…˜์œผ๋กœ ๊ด‘๊ณ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ ์„ธ๋ ฅ์— (๊ธฐ์ˆ ์ ์œผ๋กœ) ํ•ฉ๋ฅ˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋…ผ์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ์Šค๋ ˆ๋“œ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ๋‹จ๊ธฐ์ ์œผ๋กœ๋Š” ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ์‚ฌ์šฉ์ž ์Šคํ† ๋ฆฌ๋ฅผ ๊ฐ„๊ณผํ•˜๊ณ  ๊ณ„์‹œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ด€๋ จ๋œ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์•„๋งˆ๋„ ์ž์ฃผ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ปจํ…์ŠคํŠธ ์ „ํ™˜์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์–ผ๋งˆ ์ „์— Yarn์„ ์„ ํƒํ–ˆ๊ณ  ๋’ค๋Œ์•„ ๋ณด์ง€ ์•Š์•˜๋‹ค. ์ž ๊ธˆ ํŒŒ์ผ์ด์žˆ๋Š” ์ด์œ ์˜ ์‹ฌ๊ฐ์„ฑ ๋’ค์— ๋ฌด๊ฒŒ๋ฅผ ๋‘๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์‹œํ•  ๊ฒฝ๊ณ ๊ฐ€ ์•„๋‹ˆ๋ผ ์„ ํƒ ํ•ด์ œ ํ•  ์ˆ˜์žˆ๋Š” ์˜ค๋ฅ˜๋กœ ๋งŒ๋“œ์‹ญ์‹œ์˜ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•˜๋ฉด ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ†ต๊ณ„์— ๋”ฐ๋ฅด๋ฉด ๋Œ€๋ถ€๋ถ„์˜ Yarn ์‚ฌ์šฉ์ž๋Š” npm๋„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Mixed _projects_๋Š” ํ”ํ•˜์ง€ ์•Š์ง€๋งŒ, ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์—์„œ ์ผํ•˜๋Š” ํ•œ ์‚ฌ๋žŒ (์ผ๋ถ€๋Š” npm์ด๊ณ  ์ผ๋ถ€๋Š” Yarn)์€ ๋งค์šฐ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋”์šฑ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ npm์„ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค.

yarn์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ œ๊ฐ€ ์ž‘์—…ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ์—๋Š” package-lock.json ํŒŒ์ผ yarn.lock ํŒŒ์ผ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. yarn import ์ด ๋Š๋ฆฌ๊ฑฐ๋‚˜ ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋‚ด
_only_ ์˜ต์…˜์€ ์‹ค์„ ๋ฒ„๋ฆฌ๊ณ  npm์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์› ์‚ฌ๋Š” ์›์‚ฌ ์ „์šฉ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด ์›์‚ฌ ์ „์šฉ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ์ž‘ ํ•œ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜๋จธ์ง€ ์šฐ๋ฆฌ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @Spongman- yarn import ์€ (๋Š”) ๊นจ์ง€์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ package-lock.json ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค!

๋‚˜๋Š” # 6103

์•ˆ๋…•ํ•˜์„ธ์š” @Spongman- ๋ฌธ์ œ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.์ด ํŠน์ • ์‚ฌ๋ก€๋Š” ์†์ƒ๋œ package-lock.json ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

npm์€ package-lock.json ํŒŒ์ผ์„ ์ž˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์› ์‚ฌ๋Š” ๋” ํƒ„๋ ฅ์ ์ด์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ฌธ์ œ์—์„œ ์ด์— ๋Œ€ํ•œ ๋‹ต๋ณ€-์ด ๋ฌธ์ œ๋ฅผ ์ฃผ์ œ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ† ๋ก ์ด ๊ฑฐ๊ธฐ๋กœ ์ด๋™ํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

https://github.com/yarnpkg/yarn/issues/3614 (ํ˜„์žฌ 254 : +1 : s ํฌํ•จ)๋ฅผ์ฃผ์˜ ๊นŠ๊ฒŒ๋ณด๊ณ  ์ฐธ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ฌธ์ œ๋Š” ์ด์ œ ์ข…๊ฒฐ๋˜์—ˆ๊ณ  ํ† ๋ก ์€ ์—ฌ๊ธฐ๋กœ ์˜ฎ๊ฒจ์กŒ์Šต๋‹ˆ๋‹ค.

์‹ค์งˆ์ ์ธ ๋„์ „์„ ๋ฌด์‹œํ•˜๊ณ , ๋‚ด ์ƒ๊ฐ์— ์ตœ๊ณ ์˜ UX๋Š” ์ƒ๋‹จ์˜ ์š”์•ฝ์— ์–ธ๊ธ‰๋˜์ง€ ์•Š์•˜์ง€๋งŒ @thatlittlegit์ด ์–ธ๊ธ‰ ํ•œ ์˜ต์…˜์— ์˜ํ•ด ์ œ๊ณต ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ตœ์ข… ๋ชฉํ‘œ๋Š” Yarn๊ณผ npm๊ฐ„์— ํ•˜๋‚˜์˜ ์ž ๊ธˆ ํŒŒ์ผ ํ˜•์‹์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์ด์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@BrainBacon ์˜ ์š”์ ์œผ๋กœ๋„ ๋ฐฑ์—…๋ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์ข…๋ฅ˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์–ด๋–ค ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ด์ƒํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ, ์‹ค์ œ ๋ฌธ์ œ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์ด๋ก ์  ๋ฐ˜๋ก ์€์ด ์Šค๋ ˆ๋“œ์˜ @iarna (๋ฐ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์˜ @jhabidas) ์— ์˜ํ•ด ์ž‘์„ฑ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ๋‹จ์ผ ์ผ๋ฐ˜ ์†”๋ฃจ์…˜๋ณด๋‹ค ๋” ์ž˜ ์ถฉ์กฑ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ์ ˆ์ถฉ์•ˆ์„ ๋งŒ๋“œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ๋ฅผ ๋ณด์œ ํ•˜๋ฉด ๋งŽ์€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ, ๋‚˜๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ ์— ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ์ด ์ฃผ์žฅ์ด์ด ๊ฒฝ์šฐ์— ์ ์šฉ๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋„ค ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. Yarn์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋…๋ฆฝ์  ์ธ ๊ณต๊ฐ„์„ ์œ ์ง€ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฏ€๋กœ ๋” ๋‚˜์€ ๊ฒฝํ—˜์„ ์ œ๊ณต ํ•  ์ˆ˜์žˆ๋Š” ์œ ์—ฐ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Yarn์˜ CLI๊ฐ€ ์˜๋„์ ์œผ๋กœ NPM๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฝ ํŒŒ์ผ์€ Yarn์ด ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋…๋ฆฝ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜์žˆ๋Š” ๊ณต๊ฐ„ ๋ฐ–์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. package-lock.json ๋ฐ composer.lock package.json ๋ฐ composer.json package.json ๋ฐ composer.json ์™€ ํ•จ๊ป˜ ์ €์žฅ์†Œ์— ์ปค๋ฐ‹๋ฉ๋‹ˆ๋‹ค . ์ด๋Ÿฌํ•œ ํŒŒ์ผ์€ ๋„๊ตฌ ๋ณ„ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ๋ณด์žฅ๋˜๋Š” ์ •ํ™•ํ•œ ์ข…์†์„ฑ ๋ฒ„์ „์„ ์ง€์ •ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๋ณ„ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

...

Yarn์ด ์œ ์šฉํ•œ ๋„๊ตฌ๊ฐ€ ๋˜๋ ค๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ์—์„œ ํ‘œ์ค€ ๋ชจ๋ธ์„ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์–ด์•ผ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„๊ตฌ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  ์œ ์ง€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ Yarn์ด ๋ณ„๋„์˜ ์ข…์†์„ฑ ํŒŒ์ผ์ด ์•„๋‹Œ package.json ์œ„์— ๋นŒ๋“œ ๋œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ์˜ ๋Œ€๋ถ€๋ถ„์„ ์ฝ์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ดˆ๊ธฐ ํ‰๊ฐ€์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. Yarn์ด ์ €์žฅ์†Œ์—์„œ ๋™์ผํ•œ package.json ์ข…์†์„ฑ ํŒŒ์ผ์„ ๊ณ„์† ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ด์ƒ์ ์œผ๋กœ ๋™์ผํ•œ package-lock.json ํŒŒ์ผ์„ ์ €์žฅ์†Œ๋กœ ๋‚ด ๋ณด๋‚ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏ€๋กœ ์ €์žฅ์†Œ๋Š” ๋„๊ตฌ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  ์œ ์ง€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›์‚ฌ๋ถ€ํ„ฐ ์ข…์†์„ฑ ์ฝ์œผ๋ฉด yarn.json ๋Œ€์‹  package.json ๋‚˜๋Š”์ด ์ ์„ ๊ณ„์†ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ด์ƒ์ ์ธ ์ƒํ™ฉ, ์›ํ™œํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ž„์„ ์ธ์ •ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ @iarna ์˜ ๋‹ค๋ฅธ ์š”์ ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ ์ž ๊ธˆ ํŒŒ์ผ ํ˜•์‹์€ ์ž ๊ธˆ ํŒŒ์ผ ํ˜•์‹๊ฐ„์— ์„œ๋กœ ๋‹ค๋ฅธ ์žฅ๋‹จ์ ์ด ์žˆ๊ณ  ์–ด๋–ค ํ˜•์‹์ด ๊ฐ€์žฅ ์ข‹์€์ง€์— ๋Œ€ํ•œ ํ•ฉ์˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

(์ €๋Š” "๋‘ ๋„๊ตฌ๊ฐ€ ์„œ๋กœ์˜ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ƒํ˜ธ ์ดํ•ดํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค"๋Š” ๋ฐ ๋™์˜ํ•˜์ง€ ์•Š์ง€๋งŒ).

๋„๊ตฌ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ์ด์ƒ์ ์ธ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ™•์‹คํžˆ ๋‹ฌ์„ฑ ํ•  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ (๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ์ด ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋นŒ๋“œ๋˜๊ณ  ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋งŽ์€ ์˜๊ฒฌ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค), ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๊ณ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ณณ์€ ๋ง›์žˆ์Šต๋‹ˆ๋‹ค.

  • NPM / Yarn์€ ์ƒ๋Œ€๋ฐฉ์˜ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋‚ด ๋ณด๋ƒ…๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์˜ค๋ฅ˜๋กœ ๋งŒ๋“œ๋Š” ๊ตฌ์„ฑ ์˜ต์…˜).
  • ๋‘ ๋„๊ตฌ ๋ชจ๋‘ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋‹ค๋ฅธ ์ž ๊ธˆ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋ณ€ํ™˜ํ•˜๊ณ  ์‚ญ์ œํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋‚˜์—์„œ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์˜์›ํžˆ ์ „ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค (๋„ˆ๋ฌด ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด git commit -a ์ปค๋ฐ‹ํ•œ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ).

๋‚˜๋Š” ๋˜ํ•œ @imsnif ์˜ ์š”์ ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹จ์ผ ํŒจํ‚ค์ง€์— package-lock.json๊ณผ yarn.lock ํŒŒ์ผ์ด ๋ชจ๋‘ ์žˆ์–ด์•ผํ•˜๋Š” ํƒ€๋‹นํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์˜ ์ปดํ“จํ„ฐ ๋˜๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋Š” ์ž‘์—…์„ ์ง€์‹œํ•˜๋Š” ๊ฒƒ์€ ์ฃผ์ œ ๋„˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ๋‹น์‹ ์ด ํ•„์š”๋กœํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์ œํ•œ์ ์ด์ง€ ์•Š์€ ๊ฒƒ์€ ์˜ˆ์˜์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฐœ๋ฐœ์ž ํŒ€์— ์˜ํ•ด์„œ๋งŒ ์‹คํ–‰๋˜๊ณ  ๋ชจ๋‘ ์ •ํ™•ํžˆ ๋™์ผํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์ด์œ ๋กœ ๋“  Yarn๋ณด๋‹ค NPM์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์‰ฝ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ตฌ์„ฑ์›์ด ๊ฐ€๋Šฅํ•œ ํ•œ ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. NPM๊ณผ Yarn์€ package.json ์—์„œ ๋™์ผํ•œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๊ธฐ์œ„ํ•œ ๋‹จ์ˆœํ•œ ๋„๊ตฌ์ด๋ฏ€๋กœ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” package.json ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ํ•ด์„ ํ•  ๋„๊ตฌ๊ฐ€ ์žˆ์–ด์•ผํ•˜๋ฉฐ ๋” ์ด์ƒ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ž ๊ธˆ ํŒŒ์ผ ์ถฉ๋Œ์ด ๋‹จ๋…์œผ๋กœ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์˜ ๊ฒฝ์šฐ์˜€์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @nottrobin- ๋‚˜๋Š” ๋‹น์‹ ์ด ์–ด๋””์—์„œ ์™”๋Š”์ง€ ์ดํ•ดํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ์ ์ธ ๋„์ „๊ณผ ์ฒ ํ•™์  ์ฐจ์ด๋ฅผ ๋ฌด์‹œํ•œ๋‹ค๋ฉด, ๋‹ค์–‘ํ•œ ๋„๊ตฌ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•œ ์ž ๊ธˆ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ™•์‹คํžˆ ๋” ๋‚˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค (๋ฌผ๋ก  ์ œ ๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค).

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์‹ค์งˆ์ ์ธ ๋„์ „์„ ๋ฌด์‹œํ•  ์ˆ˜์—†๊ณ  ๋Œ€๋ถ€๋ถ„ ์ฒ ํ•™์  ์ฐจ์ด๊ฐ€ ๊ทธ ์ž๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ์ฐพ์€ ํƒ€ํ˜‘ (์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ)์€ ํ™•์‹คํžˆ "์ถฉ๋ถ„ํžˆ ์ข‹๋‹ค"๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ์ ˆ์ถฉ์•ˆ์˜ ์ˆจ๊ฒจ์ง„ ๊ฐ€์ •์€ ๋„๊ตฌ ์„ ํƒ์ด ๊ฐœ๋ฐœ์ž์˜ ์‹œ์Šคํ…œ ๋˜๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์ด ์•„๋‹Œ ํ”„๋กœ์ ํŠธ ๋‹น ํ•˜๋‚˜๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์ ˆ์ถฉ์•ˆ์˜ ์ˆจ๊ฒจ์ง„ ๊ฐ€์ •์€ ๋„๊ตฌ ์„ ํƒ์ด ๊ฐœ๋ฐœ์ž์˜ ์‹œ์Šคํ…œ ๋˜๋Š” ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์ด ์•„๋‹Œ ํ”„๋กœ์ ํŠธ ๋‹น ํ•˜๋‚˜๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„ค, ์ด๊ฒƒ์ด ์ œ๊ฐ€ ๊ฐ€์žฅ ์šฐ๋ คํ•˜๋Š” ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํ”„๋กœ์ ํŠธ๊ฐ€ Yarn๊ณผ NPM์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ๊ฐ€๋Šฅ ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ถ๊ทน์ ์œผ๋กœ ๋‘ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„๊ตฌ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋Š” ์ž„๋ฌด๋ฅผ ํฌ๊ธฐํ•˜๋ฉด ์‹ค์ œ๋กœ ์ข…์†์„ฑ ํŒŒ์ผ ๊ณต์œ ๋ฅผ ์ค‘๋‹จํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์›์‚ฌ ์ฝ๊ธฐ๋กœ ์ „ํ™˜ํ•ด์•ผ yarn.json ๋ณด๋‹ค๋Š” package.json . ๋‹ค๋ฅธ ๊ฒƒ์€ ๊ทธ๋ƒฅ ์ง€์ €๋ถ„ํ•˜๊ณ  ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

npm ์ž ๊ธˆ ํŒŒ์ผ์— Yarn ์ž ๊ธˆ ํŒŒ์ผ์ด ์ง€์›ํ•˜๋Š” ์ข…์†์„ฑ ๊ด€๊ณ„์˜ ์ƒ์œ„ ์ง‘ํ•ฉ์ด ์ด๋ฏธ์žˆ๋Š” ๊ฒฝ์šฐ Yarn์—์„œ ๋‘˜ ๋‹ค ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Yarn์€ package.json์œผ๋กœ ์ „ํ™˜ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Yarn์ด ์›ํ•˜๋Š” ์ถ”๊ฐ€ ํ•„๋“œ๋Š” ํ–ฅํ›„ ์ถ”๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์ž‰ํฌ ์Šค์ผ€์ดํ”„์™€ ๊ฐ™์€ ์ผ๋ถ€ SVG ํŽธ์ง‘๊ธฐ๊ฐ€ ํŽธ์ง‘๊ธฐ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌ). ๊ทธ๋Ÿฐ ๋‹ค์Œ Yarn์€ npm๊ณผ ๋™์ผํ•œ ์ข…์†์„ฑ ํ˜•์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ yarn.lock๊ณผ ๋‹ค์‹œ ํ˜ธํ™˜๋˜์–ด npm ์ž ๊ธˆ ํŒŒ์ผ์„ Yarn์ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์›ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ถ๊ทน์ ์œผ๋กœ ๋‘ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„๊ตฌ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋Š” ์ž„๋ฌด๋ฅผ ํฌ๊ธฐํ•˜๋ฉด ์‹ค์ œ๋กœ ์ข…์†์„ฑ ํŒŒ์ผ ๊ณต์œ ๋ฅผ ์ค‘๋‹จํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์›์‚ฌ ์ฝ๊ธฐ๋กœ ์ „ํ™˜ํ•ด์•ผ yarn.json ๋ณด๋‹ค๋Š” package.json . ๋‹ค๋ฅธ ๊ฒƒ์€ ๊ทธ๋ƒฅ ์ง€์ €๋ถ„ํ•˜๊ณ  ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์•„๋‹ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ™•์‹คํžˆ, ์ด๊ฒƒ์€ ๋„๊ตฌ (์‹ค)์˜ ์—„์ฒญ๋‚œ ํŒŒ๋‹จ ๋ณ€๊ฒฝ์„ ํ•„์š”๋กœ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณด๋‹ค ์ง์ ‘์ ์ด๊ณ  ์ธก์ • ๊ฐ€๋Šฅํ•œ ์ด์ ์ด์žˆ๋Š” ๋œ ๊ธ‰์ง„์  ์ธ ๋ณ€ํ™”๊ฐ€ ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‚˜์œ ์ƒ๊ฐ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹ค์šฉ์ ์ธ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‚˜์œ ์ƒ๊ฐ์ด๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹ค์šฉ์ ์ธ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ํฐ ์งˆ๋ฌธ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ œ๊ฐ€ ๋งํ•˜๊ณ ์žํ•˜๋Š” ๊ฒƒ์€ ์ด๊ฒƒ์ด ํ”„๋กœ์ ํŠธ์˜ ์ค‘์ถ”์  ์ธ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ Yarn์€ ๊ฐœ๋ฐœ์ž๊ฐ€ package.json ๋กœ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ๋…ธ๋“œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด NPM ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋„๊ตฌ ๋ช…์‹œ ์ ์œผ๋กœ ์„ ํƒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—„์ฒญ๋‚œ ๋ณ€ํ™”์ด๋ฉฐ ์šฐ์—ฐํžˆ ๋งŒ๋“ค์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ „ํ™”๋ฅผ ๊ฑธ๊ธฐ์œ„ํ•œ ์œ„๊ธฐ ์ง€์ ์ž…๋‹ˆ๋‹ค.

์ œ ์ƒ๊ฐ์—๋Š” ์•ž์œผ๋กœ 3 ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ชจ๋“  ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ Yarn๊ณผ NPM์„ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„ NPM์˜ ๋“œ๋กญ ์ธ ๊ต์ฒด๋ฅผ ๊ณ„์†ํ•ฉ๋‹ˆ๋‹ค (์ž ๊ธˆ ํŒŒ์ผ ํ‘œ์ค€ํ™”).
  2. ๋ช…์‹œ ์ ์œผ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€ ์ธํ„ฐํŽ˜์ด์Šค (์˜ˆ : yarn.json ๋ฐ yarn.lock )๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜๋„์ ์œผ๋กœ NPM์—์„œ ๋ถ„๊ธฐ
  3. NPMS ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ ˆ๋ฐ˜, ๋ฐ˜ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋”๋ธ” ๋‹ค์šด. ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ํฌ์ธํŠธ 2์™€ ๋™์ผํ•˜์ง€๋งŒ ํฌ์ธํŠธ 1๊ณผ ๊ฐ™์€ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์„ ์‚ดํŽด๋ณด๋ฉด์„œ

์—ฌ๊ธฐ์„œ ์„ธ ๋ฒˆ์งธ ์˜ต์…˜์€ ์ „์ฒด ๋…ธ๋“œ ๊ณต๊ฐ„์„ ํ˜ผ๋™ํ•˜๊ณ  ๋‘ ๋„๊ตฌ๋ฅผ ์ƒ๋‹นํžˆ ์•ฝํ™” ์‹œํ‚จ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์—ญ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Yarn์€ npm lockfile ๋ณ€ํ™˜๊ธฐ๋ฅผ ๋‚ด์žฅ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ package-lock.json์„ ๋ณผ ๋•Œ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์˜ yarn.lock ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ, Yarn์˜ ์ž ๊ธˆ ํŒŒ์ผ์ด npm๋ณด๋‹ค ์ ์€ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— npm์€ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ œ ์ƒ๊ฐ์—๋Š” Yarn์ด npm์œผ๋กœ ํ‘œ์ค€ํ™”ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

@nottrobin ๋‚˜๋Š” ๋‹น์‹ ์ด ๋ถ„์„์—์„œ ๋Œ€๋ถ€๋ถ„ ์ •ํ™•ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ง€์ ํ–ˆ๋“ฏ์ด ํ”„๋กœ์ ํŠธ๋Š” Yarn๊ณผ NPM ์ค‘์—์„œ ๋ช…์‹œ ์ ์œผ๋กœ ์„ ํƒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—„์ฒญ๋‚œ ๋ณ€ํ™”์ด๋ฉฐ ์šฐ์—ฐํžˆ ๋งŒ๋“ค์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ํ•ญ์ƒ ์‚ฌ์‹ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฑฐ๋‚˜ ์ ์–ด๋„ Yarn์ด ์ฒ˜์Œ์— ์„ ์ „ ํ•œ ์ฃผ์š” ์ด์  ์ธ ์ข…์†์„ฑ ํŠธ๋ฆฌ์˜ ์žฌํ˜„์„ฑ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. yarn.lock ์ฒดํฌ์ธ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด๋‹น ์ž ๊ธˆ ํŒŒ์ผ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ / ์ œ๊ฑฐํ•˜๋ฉด ์‚ฌ์‹ค์ƒ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@nottrobin-@Vinnl์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์ž‘๋™ ๋ฐฉ์‹์„ ์•Œ๋ฆฌ๊ณ  ์‹ถ์ง€๋Š” ์•Š์ง€๋งŒ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด yarn๊ณผ npm์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ฐ˜ ํŒจํ„ด์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋„๊ตฌ ๋ชจ๋‘์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์ˆ ์ ์œผ๋กœ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ด€๋ฆฌ์ž๋กœ์„œ ๊ถŒ์žฅํ•ด์•ผํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์˜ ๋‹ค์–‘ํ•œ ํ† ๋ก ์ด ๋ณด์—ฌ ์ฃผ๋“ฏ์ด) ์ƒํ˜ธ ๊ตํ™˜ ๊ฐ€๋Šฅํ•œ ์ž ๊ธˆ ํŒŒ์ผ์„ ๊ฐ–๋Š” ๊ฒƒ์—๋Š” ์ˆ˜๋งŽ์€ ๋‹ค๋ฅธ ์ด์ ์ด ์žˆ์ง€๋งŒ ๊ฐœ์ธ์ ์œผ๋กœ ์ด๊ฒƒ์ด ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด๋‹น ์ž ๊ธˆ ํŒŒ์ผ์„ ์กด์ค‘ํ•˜์ง€ ์•Š๊ณ  ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ / ์ œ๊ฑฐํ•˜๋ฉด ์‹ค์ œ๋กœ ์“ธ๋ชจ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์ €๋Š” Yarn์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ทธ ์ง„ํ™ํƒ•์— ์–ด๋Š ์ •๋„ ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. yarn.lock ์˜ ์กด์žฌ๋Š” ์ด๋ฏธ ๋ถ€๋ถ„์ ์œผ๋กœ ์ž์ฒด ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ํ•ญ์ƒ ์•ฝ๊ฐ„ ์ง€์ €๋ถ„ํ•œ ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. Yarn์˜ ๋ชฉ์ ์€ ์‚ฌ๋žŒ๋“ค์ด NPM์—์„œ Yarn์œผ๋กœ ์ด๋™ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ๋ชฉ์ ์— ๋ถ€ํ•ฉํ–ˆ์ง€๋งŒ ๋Œ์•„ ์˜ค์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ ์–ด๋„ NPM์ด ์—ฌ์ „ํžˆ ์ „์ ์œผ๋กœ ์ง€์›๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ํŽธํ•˜๊ฒŒ ๋‚ด๋ฆด ์ˆ˜์žˆ๋Š” ๊ฒฐ์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์• ์ดˆ์— ์ž ๊ธˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ญ์ƒ ๊ทธ๋žฌ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ๊ณ„์† ์ž‘๋™ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ NPM์ด ์ข…์†์„ฑ์„ ์ž ๊ทธ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์›์‚ฌ์— ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฒฐํ•ฉํ•˜๋„๋ก ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ, ์ง€๊ธˆ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค yarn.lock - - ๋‚ ์งœ๋ฅผ, ๊ทธ๋ฆฌ๊ณ  package-lock.json ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํšจ๊ณผ์ ์œผ๋กœ NPM์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๋” ์ด์ƒ ์‚ฌ์‹ค, ๊ทธ๋ž˜์„œ ๋‚ด ๊ณ„ํš.

์›์‚ฌ๊ฐ€ ๋” ์ด์ƒ npm์˜ ๋“œ๋กญ ์ธ ๋Œ€์ฒดํ’ˆ์ด ์•„๋‹ˆ๋ผ๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”? ์›์‚ฌ ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ๋งŒ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฑฐ์ฃ ?

๋งŒ์•ฝ ๊ทธ๋ ‡๋‹ค๋ฉด, ๋‹น์‹ ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์–€ ํ™ˆํŽ˜์ด์ง€์—์ด ์‚ฌ์‹ค์„ ๋ถ„๋ช…ํžˆ ๋ฐํ˜€์•ผ ํ•  ๋นš์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ์ด๊ฒƒ ๋˜๋Š” npm์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

์›์‚ฌ๊ฐ€ ๋” ์ด์ƒ npm์˜ ๋“œ๋กญ ์ธ ๋Œ€์ฒดํ’ˆ์ด ์•„๋‹ˆ๋ผ๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”?

๊ฒฐ์ฝ” ๊ทธ๋ ‡์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก npm์„ ๋‹ค์†Œ ๋ชจ๋ฐฉํ–ˆ์ง€๋งŒ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ผ๋ถ€ ์ž‘์—…์ด ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ๋“œ๋กญ ์ธ ๊ต์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•œ ์ฃผ๋œ ์ด์œ ๋Š” npm์ด ๋น„๊ตํ•  ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด์ œ npm์ด ์–ด๋–ค ์ธก๋ฉด์„ ๋”ฐ๋ผ ์žก๊ณ  ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ๊ฒฐ์ • ํ–ˆ์œผ๋ฏ€๋กœ ๋‹จ์ˆœํžˆ ์šฐ๋ฆฌ๊ฐ€ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๋‹ค๋ฅธ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ๋ฅผ ๋“ค์–ด ์ตœ๊ทผ์— ๊ตฌํ˜„ ๋œ ์˜คํ”„๋ผ์ธ ๋ฏธ๋Ÿฌ ๊ธฐ๋Šฅ npm์ด ๊ธฐ์กด ๊ธฐ๋Šฅ๊ณผ ํ˜ธํ™˜๋˜์ง€ ์•Š์Œ). ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ "์•ˆ์ „"ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์šฐ์—ฐํžˆ ์ž‘๋™ํ•˜๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๊ทธ๋ ‡๋‹ค๋ฉด, ๋‹น์‹ ์€ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์–€ ํ™ˆํŽ˜์ด์ง€์—์ด ์‚ฌ์‹ค์„ ๋ถ„๋ช…ํžˆ ๋ฐํ˜€์•ผ ํ•  ๋นš์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ์ด๊ฒƒ ๋˜๋Š” npm์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

์‚ฌ์‹ค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ง€์นจ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๋ฐœ์–ธ์œผ๋กœ ์ธํ•ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ž˜๋ชป๋œ ์ธ์ƒ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ž˜๋ชป๋œ ๋‹จ๋ฝ ์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ์•Œ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค .๐Ÿ™์ด ๋‹จ๋ฝ์„ ์šฐ๋ฆฌ์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝํ•˜๋Š” PR์„ ๊ธฐ๊บผ์ด ๋ฐ›์•„ ๋“ค์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค (์˜ˆ : ํŒ€๊ฐ„์— Yarn์„ ์ˆœ์„œ๋Œ€๋กœ ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ) ๋ชจ๋“  ์‚ฌ๋žŒ์ด ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์˜ ํ˜œํƒ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ๋„๋กํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ์ฝ”

์˜ค๋ฅ˜ ... ๋งˆ์ผ€ํŒ… ๋‹ด๋‹น์ž์™€ ์–˜๊ธฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. https://yarnpkg.com/lang/en/docs/

Yarn์€ ํŒจํ‚ค์ง€ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ํฌํ•จํ•˜์—ฌ npm์˜ ๋งŽ์€ ๊ธฐ๋Šฅ๊ณผ ์ง์ ‘ ์ƒํ˜ธ ์šด์šฉ๋˜๋ฏ€๋กœ ์†์‰ฝ๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ผ€ํŒ… ๋‹ด๋‹น์ž๋Š” ์—†์ง€๋งŒ ์ข‹์€ PR์€ ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค ๐Ÿ™ƒ

์ด ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์—๋Š” ๋„ˆ๋ฌด ์ž˜๋ชป ๋“ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์•„๋‹Œ ๋งŽ์€ ๊ธฐ๋Šฅ๊ณผ ์ƒํ˜ธ ์šด์šฉํ•˜๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๊ณ ํ†ต์Šค๋Ÿฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค (๋” ๋‚˜์œ ๊ฒฝ์šฐ yarn import ๋–จ์–ด์ ธ ์žˆ์Œ).

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ๊ณ ํ†ต์ด ์—†์Šต๋‹ˆ๋‹ค

์ €๋Š” ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์—๋ณ„๋กœ ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ์•ฝ์† ํ•œ ๊ฒƒ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค (์ด ์‚ฌ๋žŒ๋“ค์€ _ ํ™•์‹คํžˆ _ ๋งˆ์ผ€ํŒ… ๋‹ด๋‹น์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค) : https://code.fb.com/web/yarn-a-new-package-manager-for-javascript/

๊ธฐ์กด ์›Œํฌ ํ”Œ๋กœ์šฐ์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋” ๋น ๋ฅด๊ณ , ๋” ์•ˆ์ „ํ•˜๊ณ , ๋” ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค.

AFAICT ์—ฌ๊ธฐ์—๋Š” 4 ๊ฐ€์ง€ ๋“ฑ๊ธ‰์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ์—์„œ ์›์‚ฌ ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค,
  • facbook sales-pitch (์œ„)๋ฅผ ๊ตฌ์ž…ํ–ˆ์ง€๋งŒ ์•„์ง ์ด๋Ÿฌํ•œ ์ž ๊ธˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค,
  • ํ•„์š”ํ•  ๋•Œ ์ž ๊ธˆ ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ํ•ดํ‚น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์• ์“ฐ๋Š” ์‚ฌ๋žŒ๋“ค,
  • ๋ฐฉ๊ธˆ ์›์‚ฌ๋ฅผ ํฌ๊ธฐํ•˜๊ณ  npm์œผ๋กœ ๋‹ค์‹œ ์ „ํ™˜ ํ•œ ๊ฒƒ.

๋‚˜๋Š” ์ •๋ง๋กœ ๋งˆ์ง€๋ง‰ ์นดํ…Œ๊ณ ๋ฆฌ์— ์žˆ๊ณ  ์‹ถ์ง€ ์•Š์ง€๋งŒ ๊ทธ๊ฒƒ์ด ๋‚ด๊ฐ€ ๋ฐ€๋ ค ์˜ค๋Š” ๊ณณ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@Spongman ๊ทธ ๋งˆ์ง€๋ง‰ ํ•˜๋‚˜์—์„œ ๋‹น์‹ ์„ ๋ง‰๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์•„๋งˆ ๊ทธ๊ฒƒ์„ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค;)

@Spongman ์ €๋Š” Yarn๊ณผ ๊ด€๋ จ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ข€ ๋” ๋ฌด๋š๋šํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ๊ตฌ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด GitHub์˜ ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์—ฌ ์ˆ˜์ • ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  ๋” ๋‚˜์€ ๋ฌธ๊ตฌ๋กœ ํ’€ ์š”์ฒญ์„ ์ œ์ถœํ•˜์„ธ์š”. arcanis๋Š” ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์—ด๋ ค ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆํ–ˆ์Šต๋‹ˆ๋‹ค.

(๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ํŽธ์ง‘ ํ•  ์ˆ˜ ์—†์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ์›น ์‚ฌ์ดํŠธ๊ฐ€ ๊ฐ€์žฅ ์ค‘์š” ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

@imsnif ์™€ @arcanis '์˜ ๋‹ต๋ณ€์—์„œ ๊ณต์‹ ์ž…์žฅ์€ Yarn์ด NPM๊ณผ ํ•จ๊ป˜ ๊ณ„์†ํ•ด์„œ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก "์˜๋„ํ•˜์ง€ ์•Š์€"๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ด๊ฒƒ์ด Yarn์ด ์ค€ ์ธ์ƒ์ด๋ผ๋Š” @Spongman์— ์ „์ ์œผ๋กœ ๋™์˜ํ•˜๋ฉฐ ๊ทธ ๋‹น์‹œ์—๋Š” ๊ทธ๊ฒƒ์ด ์‚ฌ๊ณ ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ทธ๊ฒƒ์˜ ์ฒœ์žฌ์˜€์Šต๋‹ˆ๋‹ค. ๊ณต์‹ NPM ํ‘œ์ค€์„ ์™„์ „ํžˆ ์ง€์›ํ•˜๋ฉด์„œ ์†๋„, ๋ณด์•ˆ ๋“ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘,์ด ๋ฌธ์ œ๋Š” Yarn์˜ ์ด์ „๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ถ„๋ช…ํ•œ ์ž…์žฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ฌผ๋ก  Yarn์˜ ๊ด€๋ฆฌ์ž๋Š” ์ž์‹ ์ด ์„ ํƒํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋‹น์‹ ์ด ๊ณผ์†Œ ์ถ”์ • ๊ทธ๋“ค์ด (ํ”„๋กœ์ ํŠธ ๋ ˆ๋ฒจ์—์„œ)์€ NPM๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ ๋ฏฟ๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ๋•Œ๋ฌธ์— ์›์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ ๋Œ€ํญ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์Šค์œ„์น˜๋ฅผํ•˜์ง€ ๋ชปํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” https://github.com/yarnpkg/yarn/issues/3614 ์˜ 254 : +1 : s ๋ฐ 10 : heart : s ์™€ 57 ๊ฐœ์˜ upvotes์— "" yarn.lock ๋ฐ package-lock.json์„ ์ปค๋ฐ‹ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? "๋ผ๊ณ 

Yarn์ด ๊ทธ ์ „๋ฉด์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ํฌ๊ธฐํ•˜๋ฉด @Spongman ๊ณผ ๋‚ด ํŒ€๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋งŽ์€ ํŒ€์„ ์žƒ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์†”์งํžˆ Yarn ๋งŒ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ npm ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๋งํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ "์ด๋ด, ์šฐ๋ฆฌ ํŒ€์ด Yarn์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š” ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ฐ•์ œ๋กœ npm์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•  ๊ฒƒ"์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๋ง์ด ์•ˆ ๋ผ. Yarn์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ชจ๋“  ์‚ฌ๋žŒ์ด Yarn์„ ์‚ฌ์šฉํ•˜๋„๋กํ•˜๊ณ  npm ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ชจ๋“  ์‚ฌ๋žŒ์ด npm์„ ์‚ฌ์šฉํ•˜๋„๋กํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ๋งŒํผ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

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

์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— ๊ด€ํ•ด์„œ๋Š” fb ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ๋“œ๋กญ ์ธ ๊ต์ฒด์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Yarn์ด ์†Œ๊ฐœ ๋œ ๋ถ€๋ถ„์„ ์ธ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์›Œํฌ ํ”Œ๋กœ์šฐ๋ฅผ ๋Œ€์ฒดํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด "npm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์™€์˜ ํ˜ธํ™˜์„ฑ ์œ ์ง€"์— ๋Œ€ํ•ด ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ npm์— ๊ฐ€์ ธ์™€์•ผ ํ•  ๊ณต์ •ํ•œ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค (npm cli, npm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก  npm Inc ์ž์ฒด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค).

Yarn์€ npm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ npm ํด๋ผ์ด์–ธํŠธ ๋˜๋Š” ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์— ๋Œ€ํ•œ ๊ธฐ์กด ์›Œํฌ ํ”Œ๋กœ๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์ž…๋‹ˆ๋‹ค.


๋งˆ์ง€๋ง‰ ๊ฒƒ์—์„œ ๋‹น์‹ ์„ ๋ง‰๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์•„๋งˆ ๊ทธ๊ฒƒ์„ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค;)

@zkat ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@nottrobin- ๋‚˜๋Š” ๋‹น์‹œ ์ฃผ๋ณ€์— ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์›์‚ฌ์˜ ์›๋ž˜ ์˜๋„๋ฅผ ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ˆ˜์‹ญ ๊ฐœ์˜ ์ €์žฅ์†Œ๊ฐ€์žˆ๋Š” ํ˜ผํ•ฉ ์›์‚ฌ / npm ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•˜๊ณ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ๋‹น์‹œ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ yarn / npm์˜ ์„ ํƒ์ด express / hapi, mobx / redux ๋“ฑ์˜ ์„ ํƒ์ฒ˜๋Ÿผ repo ๋‹น ์„ ํƒ์ด๋ผ๋Š” ๊ฒƒ์ด ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ„๋ช…ํ•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ npm์œผ๋กœ ๋”์šฑ ๋ช…ํ™• ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์ž˜๋ชป๋œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๋ฉด ํ•ด๋‹น ์ข…์†์„ฑ์ด ์ง€์†์ ์œผ๋กœ ์ž ๊ฒจ ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— npm @ 5 ์ด์ „์—๋„ ์—‰๋ง์ด๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผฐ๊ณ , ์ด๊ฒƒ์ด ์‹ค์ˆ˜๋ผ๋Š” ๊ฒƒ์„ ๋ชจ๋“  ๊ด€๋ จ์ž๋“ค์—๊ฒŒ ๋งค์šฐ ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค *.

๋‚˜๋Š” ์ด๊ฒƒ์ด ํ˜ผ๋ž€ ์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Œ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ž์‹ ์˜ ์ž˜๋ชป์ด ์•„๋‹ˆ๋ผ๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ 100 % ๋ช…ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์˜คํ•ด์— ๋งž๊ฒŒ ๋„๊ตฌ๋ฅผ ๋Œ€ํญ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์˜ณ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€๋ณด๊ธฐ์— yarn ์€ ๋ฐ•์Šค ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋‹จ์œ„๋กœ npm์„ ๋Œ€์ฒดํ•˜๋Š” ๋“œ๋กญ์ž…๋‹ˆ๋‹ค.

* ๊ทผ์‚ฌ / npm ํˆด๋ง์ด ํ˜ผํ•ฉ ๋œ ์—ฌ๋Ÿฌ ๋น„ ์ž‘์—… ๊ณต๊ฐ„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ํŠน์ • ์ƒํ™ฉ์€ ์ •ํ™•ํžˆ ๊ทธ๋Ÿฌํ•œ ์‹ค์ˆ˜ ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•œ ๊ธฐ์ˆ  ์ˆ˜์ค€๋ณด๋‹ค๋Š” ์ธ๊ฐ„ ์ˆ˜์ค€์—์„œ ์ด์ƒ์ ์ด์ง€ ์•Š์•˜๊ณ  ๊ฒฐ๊ตญ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๋ฉด ๋‘ ๋„๊ตฌ๊ฐ€ ๋‚˜๋ž€ํžˆ ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์†”์งํžˆ Yarn ๋งŒ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ npm ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, @arcanis ์™€ @imsnif ๊ฐ€ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ์ ์„ ๋ถ„๋ช…ํžˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๊ณ ์žํ•˜๋Š” ์œ ์ผํ•œ ์š”์ ์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค (: +1 : s ์ฐธ์กฐ)์ด ๋™์ผํ•œ "์ž˜๋ชป"ํ•ด์„์„ํ•˜๊ณ  Yarn์ด ์ดํ•ด ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด NPM๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Yarn์ด ์šฐ๋ฆฌ์—๊ฒŒ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๋ ‡๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(๋งˆ์ง€๋ง‰ ํ•œ ๊ฐ€์ง€ ์š”์ - @imsnif Node ์ข…์†์„ฑ์„ ์„ค์น˜ํ•˜๋Š” ๋„๊ตฌ๋ฅผ express vs hapi, mobx vs redux์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ์„ ํƒ๊ณผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ์™„์ „ํžˆ ์–ด๋ฆฌ์„์€ ์ผ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์•ฑ์˜ ๊ธฐ๋ณธ ํŠน์„ฑ์ž…๋‹ˆ๋‹ค. ๋ช…๋ฐฑํ•œ ์ฐจ์ด์ ์„ ๋ณผ ์ˆ˜ ์—†๋‹ค๋ฉด, ๋‚ด ์š”์ ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ๋„ ๋‹น์—ฐํ•ฉ๋‹ˆ๋‹ค.)

์–ด์จŒ๋“  ์ด์ œ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด๊ฐ€ ํ•  ์ˆ˜์žˆ๋Š” ํ•œ ๋‚˜์˜ ์ฃผ์žฅ์„ ๋‚ด๋ฆฐ ๊ฒƒ ๊ฐ™๋‹ค.

์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ "ํŒ€"์ด yarn ๋˜๋Š” npm์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ์ฝ” ๋ฌธ์ œ๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๊ฐ€์žฅ ํŽธ๋ฆฌํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ˜„์‹ค ์„ธ๊ณ„์—์„œ npm์€ ์™•์ด๋ฏ€๋กœ ์‹ค์ด npm ์„ธ๊ณ„์—์„œ ์ž˜ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด ์ฃฝ์Šต๋‹ˆ๋‹ค.

^์ด

๊ทธ๊ฒƒ๋„ ์˜คํ•ด ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ 1 ๋…„ ๋™์•ˆ Yarn์€ npm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๋Œ€ํ•œ ์ด ์š”์ฒญ ๋Ÿ‰์˜ 20 %์—์„œ 4 ์›” ์—

์ง€๊ธˆ ๋‹น๋ฉดํ•œ ์ฃผ์ œ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์„ค์น˜์‹œ package-lock.json ํŒŒ์ผ์ด ๊ฐ์ง€๋˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด PR์„ ์ž‘์„ฑํ•˜๋Š” ์‚ฌ๋žŒ ์€

Psst , https: //github.com/yarnpkg/yarn/pull/5920

๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค : heart_eyes :

์ด ์ž‘์—…๊ณผ yarn import ์ž‘์—… ์‚ฌ์ด์—์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@jmorrell ์ด ์ด๊ฒƒ์ด Heroku์˜ ๋ฌธ์ œ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์ด๊ฒƒ์ด ์ถฉ๋ถ„ํ•œ ์ง€ ๋˜๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€๊ฒฝ (๊ฒฝ๊ณ  / ์˜ค๋ฅ˜ ๋“ฑ)ํ•˜๊ณ  ์‹ถ์€์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆด ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : afaik ๊ฒฝ๊ณ ๊ฐ€ ์•„์ง ๋ฆด๋ฆฌ์Šค๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์•„์ง ๊ธฐ๋‹ค๋ฆด ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ๋„ ์˜คํ•ด ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ? npm์˜ ํŠธ๋ž˜ํ”ฝ ์–‘์€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜คํ”ˆ ์†Œ์Šค์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๋ ค์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋” ์ •ํ™•ํ•œ ํ‰๊ฐ€๋Š” ์–ด๋–ค github ํ”„๋กœ์ ํŠธ์— (yarn.lock, package-lock.json) 0,1 ๋˜๋Š” 2๊ฐ€ ์žˆ๋Š”์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” yarn.lock ํŒŒ์ผ๊ณผ _no_ package-lock.json (๋ช…๋ฐฑํ•œ ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ )์ด์žˆ๋Š” github์—์„œ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ (๋ˆˆ์— ๋„๋Š” ํฌ๊ธฐ)๋ฅผ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

IMO๋Š” ๋ณ„๋„์˜ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋ณด๊ด€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋‘ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๋ชจ๋‘ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ž ๊ธˆ ํŒŒ์ผ๊ณผ ERROR (์˜ค๋ฒ„๋ผ์ด๋“œ ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉ)๋ฅผ ๊ฐ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‘-์ฃผ์ œ์— ์ง‘์ค‘ํ•˜๊ณ  ์ง์ ‘ ๊ด€๋ จ์ด์—†๋Š” ๋Œ“๊ธ€์€ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค (์˜ˆ : Discord ์ฑ„๋„). ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ณต์ •ํ•˜๊ฒŒ npm <> yarn ํ† ๋ก ์ด ์—ฌ๊ธฐ์— ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ!

๋‚˜๋Š” ์ „์ฒด ํŠธ๋ ˆ๋“œ๋ฅผ ์ฝ์ง€ ์•Š์•˜์ง€๋งŒ IHMO ์‚ฌ์šฉ์ž๋Š” ์ตœ์†Œํ•œ ๋ชจํ˜ธ์„ฑ์ด ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ ค์•ผํ•ฉ๋‹ˆ๋‹ค.

npm์— yarn.lock ํŒŒ์ผ์ด ํ‘œ์‹œ๋˜๋ฉด npm์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ์‡„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
"๊ฒฝ๊ณ  :์ด ํ”„๋กœ์ ํŠธ๋Š” yarn์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 'npm install'๋Œ€์‹  'yarn'์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค."

yarn์ด package-lock.json ํŒŒ์ผ์„ ๋ณด๋ฉด yarn์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ์‡„ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
"๊ฒฝ๊ณ  :์ด ํ”„๋กœ์ ํŠธ๋Š” npm์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 'yarn'๋Œ€์‹  'npm install'์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค."

๊ทธ๋ฆฌ๊ณ  ์œ„์—์„œ ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž (package.json์—์„œ)๋ฅผ "์„ ํ˜ธ"ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ๋‹น์‹œ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ yarn / npm์˜ ์„ ํƒ์ด express / hapi, mobx / redux ๋“ฑ์˜ ์„ ํƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ณ„ ์„ ํƒ์ด๋ผ๋Š” ๊ฒƒ์ด ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ„๋ช…ํ•˜๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ „ํ˜€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ฐœ๋ฐœ์ž ๋กœ์ปฌ ์„ ํƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๊ณ , ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์ด ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ ์ €์žฅ์†Œ์—์„œ ๊ณต์กด ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, ํ•˜๋‚˜๋งŒ ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด _ ์กฐ๊ธˆ ๋” ํŽธ๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค _. Express / hapi ๋“ฑ์˜ ์˜ˆ๋Š” ์ข‹์ง€๋งŒ ์ด๊ฒƒ์ด ์„ ํƒ์ด ์•„๋‹˜์„ ๋ถ„๋ช…ํžˆํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋” ๋งŽ์€ ๊ฐ€์‹œ์„ฑ์„ ๊ฐ€์ ธ์•ผํ•ฉ๋‹ˆ๋‹ค.

package.json์— ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

"package-manager": "yarn"

๋ชจ๋“  ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ ๊ตฌํ˜„๋˜๋Š” ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ์ตœ์ƒ์˜ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋Š” redux๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ mobx ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž˜๋ชป๋œ ํ”„๋กœ์ ํŠธ์—์„œ ํ˜ธ์ถœ๋˜๋ฉด ์ง„ํ–‰์„ 100 % ๊ฑฐ๋ถ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ๊ฐ€ ์•„๋‹Œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ ค์•ผํ•ฉ๋‹ˆ๋‹ค.

package.json์— ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
"package-manager": "yarn"

๋ชจ๋“  ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ ๊ตฌํ˜„๋˜๋Š” ๊ฒฝ์šฐ ์ด๊ฒƒ์ด ์ตœ์ƒ์˜ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

npm์ด ์ด๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด ์ ์ ˆํ•œ ์žฅ์†Œ์—์„œ ํ† ๋ก 

์ƒˆ๋กœ์šด "ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž"ํ•„๋“œ์— ๋Œ€ํ•ด ๊ถŒ์žฅํ•˜๊ณ  ๋Œ€์‹  ์ด๋ฏธ ์„ ํ–‰ ๊ธฐ์ˆ ์ด์žˆ๋Š” ๊ธฐ์กด engines ์Šคํƒ ์ž๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

yarn ๋ฐ npm ๋ฌธ์„œ๋Š” ๋ชจ๋‘ engines.npm ๋ฐ engines.yarn ์‚ฌ์šฉ์„ ์–ธ๊ธ‰ํ•˜์—ฌ ๊ฐ๊ฐ์˜ ๋ฒ„์ „์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์›์‚ฌ ๋ฒ„์ „์ด engines.yarn ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋„ ์›์‚ฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

https://yarnpkg.com/en/docs/package-json#engines-
https://docs.npmjs.com/files/package.json#engines

npm์ด๋‚˜ yarn์ด "๊ฒฝ์Ÿํ•˜๋Š”"๊ด€๋ฆฌ์ž์— ๋Œ€ํ•ด engines ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๋”๋ผ๋„ (์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค),์ด ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž์™€ ํ†ต์‹  ํ•  ์ˆ˜์žˆ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. (package-lock.json ๋˜๋Š” yarn.lock์˜ ์กด์žฌ๊ฐ€ ์‹ค๋งˆ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ)

๋ถ„๊ธฐ๊ฐ€ ์•„๋‹Œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๊ฐ„์˜ ์ˆ˜๋ ด์„๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๋ ด ๋˜๋Š” ๊ฑฐ๋ถ€์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ์˜ ๋ชจํ˜ธํ•˜๊ณ  ์ž˜๋ชป๋œ ์ค‘๊ฐ„ ์ง€์ ์€ ํ•ด ๋กญ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ž ๊ธˆ ํŒŒ์ผ์ด์žˆ๋Š” ์ƒํƒœ์—์„œ ์˜ค๋ฅ˜๋ฅผ ๋˜์ง€๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋งˆ์ฐฐ์„ ์ตœ์†Œํ™” ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

npm์ด ์ด๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด ์ ์ ˆํ•œ ์žฅ์†Œ์—์„œ ํ† ๋ก ์„ ์—ฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๊ฐ€์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉํ–ฅ์œผ๋กœ ์ตœ๊ทผ ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค : https://npm.community/t/npm-install-should-warn-about-the-presence-of-yarn-lock-files/1822

๋‚ด ํˆฌํ‘œ๋Š” ๊ฒฝ๊ณ  ๋Œ€์‹  ์ „์ฒด ์ค‘์ง€ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ํ•ด๋‹น ์Šค๋ ˆ๋“œ์— ์ƒˆ ์‹œ์ž‘ ์Šค๋ ˆ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ถ„๊ธฐ๊ฐ€ ์•„๋‹Œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž ๊ฐ„์˜ ์ˆ˜๋ ด์„๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

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

ํŒ€ ๊ฐ„์˜ ์ถ”๊ฐ€ ๋Œ€ํ™”์—์„œ ๋‚˜์˜ค๋Š” ์œตํ•ฉ์ด ๋ฌด์—‡์ด๋“  ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๋„์ฐฉํ•˜๋ฉด ์ œ์•ˆ ๋œ ์˜ค๋ฅ˜๋ฅผ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์‚ฌ์šฉ์ž๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์ „ํ™˜ํ•˜๊ณ  ํ˜ผํ•ฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์˜ค๋ฅ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋” ๋งŽ์€ ํ˜ผ๋ž€์„ ํ”ผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ˆ˜๋ ด ๋ฐฉํ–ฅ์œผ๋กœ์˜ ๋…ธ๋ ฅ์ด ์ค‘๋‹จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด "ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž"ํ•„๋“œ์— ๋Œ€ํ•ด ์ถ”์ฒœํ•˜๊ณ  ๋Œ€์‹  ์ด๋ฏธ ์„ ํ–‰ ๊ธฐ์ˆ ์ด์žˆ๋Š” ๊ธฐ์กด ์—”์ง„ ์Šคํƒ ์ž๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์˜ ์กด์žฌ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ํŠน์ • ๋ฐฉ๋ฒ•์— ์ง‘์ฐฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๊ทธ๋ฆผ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ํŠนํžˆ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” gatsbyjs์ž…๋‹ˆ๋‹ค. ์ƒํ™ฉ์€ @gaearon์ด ๋ณด๊ณ  ํ•œ ์Šต๋‹ˆ๋‹ค .

React App ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ํ”„๋กœ์ ํŠธ๊ฐ€ Yarn์œผ๋กœ ์ƒ์„ฑ๋˜์ง€๋งŒ (Yarn์ด ์‹œ์Šคํ…œ์—์žˆ๋Š” ๊ฒฝ์šฐ) ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฌธ์„œ๋ฅผ ๋”ฐ๋ผ npm ์„ค์น˜๋ฅผ ์ง€์‹œํ•˜๊ณ  ์ „์ฒด ํŠธ๋ฆฌ๋ฅผ ๋‚ ๋ ค ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์€ ๋งค์šฐ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด gatsby๋Š” yarn์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์Šคํƒ€ํ„ฐ์— package-lock.json ๋„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๋Š” ๋‘ ์ž ๊ธˆ ํŒŒ์ผ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ณ  ๊ฒฝ๊ณ ๋ฅผ๋ณด๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์ง€๋งŒ ์˜จ ๋ณด๋”ฉ ๊ฒฝํ—˜์„ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@jmorrell - https: //github.com/yarnpkg/yarn/pull/5920 ์€ 7 ์›” 25 ์ผ 1.9.2 ์— ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค)-ํ•˜์ง€๋งŒ ๊ทธ ์ดํ›„๋กœ Heroku์˜ ์ด์ค‘ ์ž ๊ธˆ ํŒŒ์ผ ์˜ค๋ฅ˜์™€ ๊ด€๋ จํ•˜์—ฌ ๊ณต์œ  ํ•  ํ†ต์ฐฐ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@imsnif ์ด๋ฉ”์ผ ์•Œ๋ฆผ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ์—ฌ๊ธฐ์— ์—…๋ฐ์ดํŠธ๋ฅผ ๋†“์ณ์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ 2018 ๋…„์— ๋งค์ฃผ ์ด๋Ÿฌํ•œ ํŠน์ • ์‹คํŒจ๋ฅผ ๊ฒฝํ—˜ ํ•œ ์•ฑ ์ˆ˜์˜ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค.

(๋‚˜๋Š” y ์ฒ™๋„๋ฅผ ํŽธ์ง‘ํ–ˆ์ง€๋งŒ ์ด๊ฒƒ์€ 100 ๋ช…์˜ ๊ฐœ๋ฐœ์ž๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์ถ”์„ธ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค)

two-lockfile failures

  1. 7 ์›”์˜ ํ•˜๋ฝ์€ S3์˜ ๊ด€๋ จ์—†๋Š” ๋ฌธ์ œ์—์„œ ๋น„๋กฏ๋ฉ๋‹ˆ๋‹ค.

  2. 7 ์›” 25 ์ผ ์ดํ›„์˜ ์ถ”์„ธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด์ด ๊ฒฝ๊ณ ๋Š”์ด ์˜ค๋ฅ˜๋ฅผ ๊ฒฝํ—˜ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ˆ˜์— ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ๋ฏธ์ณค์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ณ€ํ™”์˜ ๊ทœ๋ชจ์— ๋‹ค์†Œ ๋†€๋ž๋‹ค.

@jmorrell- ์ด๊ฒƒ์€ ์ •๋ง ๋Œ€๋‹จํ•ฉ๋‹ˆ๋‹ค!
๋‚˜๋„ ์ด๊ฒƒ์— ์ƒ๋‹นํžˆ ๋†€๋ž๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•  ๊ฒƒ์ด๋‹ค.

๋‚˜๋Š” (์‹ค ์ธก์—์„œ)์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋™์˜ํ•˜์‹ญ๋‹ˆ๊นŒ?

๋‚˜๋Š” ์—ฌ์ „ํžˆ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด package-lock.json ๋ฅผ ์ œ๊ฑฐํ•˜๋ผ๋Š” ์กฐ์–ธ์ด ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋ฒ„์ „ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉฐ (๋‹ค์‹œ ์ผ๋ฐ˜์ ์œผ๋กœ) ๋น„ ํ˜ธํ™˜์„ฑ๊ณผ ํŒŒ์†์œผ๋กœ ์ด์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ์ด ์กฐ์–ธ์€ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋งŒ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์กฐ์–ธ์„ ๋”ฐ๋ฅด๋Š” ์ผ๋ฐ˜ ๊ธฐ์—ฌ์ž๋„ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

package-lock.json ๊ฐ€ ์žˆ๊ณ  yarn ๊ฐ€ ์„ค์น˜ํ•˜๋Š” ๋ฒ„์ „์ด npm ๊ฐ€ ์„ค์น˜ํ•  ๋ฒ„์ „๊ณผ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅ ํ•  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ IMO๋Š” ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์‹คํŒจ ํ•ฉ๋‹ˆ๋‹ค .

@Spongman์„ ์ž…๋ ฅ ํ•ด ์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด ์šฐ๋ฆฌ ์œ„์—์žˆ๋Š” (๋งค์šฐ ๊ธด) ์Šค๋ ˆ๋“œ์—์„œ ์ž˜ ๋…ผ์˜๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘ ๋‹น์‹ ์˜ ์ž…์žฅ์„ ์ดํ•ดํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฐธ์—ฌํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@jmorrell ์ด ๋‹ค์Œ ์ฃผ ์ •๋„์— ์ €์—๊ฒŒ ๋‹ฌ๋ฆฌ

@imsnif ์ง€๊ธˆ๊นŒ์ง€ 9 ์›” (9 ์›” 1 ์ผ-9 ์›” 20 ์ผ)์˜ ์‹คํŒจ๋ฅผ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ์‚ดํŽด

node build failures september 1 - 20 2018

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด npm์—์„œ ์–ด๋–ค ์›€์ง์ž„๋„ ๋ณด์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ๊ธฐ์— ๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” PR์„ ๋งŒ๋“ค๊ณ  ์ˆ˜๋ฝ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” (์‹ค ์ธก์—์„œ)์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋™์˜ํ•˜์‹ญ๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์ด ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฉฐ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ npm์ด์ด ์ผ€์ด์Šค๋ฅผ ์น˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๋ฉด ์ˆซ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š” ์ง€ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํ•ญ๋ชฉ์„ ๋‹ซ๊ฑฐ๋‚˜ ์ถ”๊ฐ€ ๋ณ€๊ฒฝ์„ ์›ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ๊ท€ํ•˜์—๊ฒŒ ๋งก๊ธฐ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ์‚ฌ์šฉ์ž์—๊ฒŒ ํฐ ๋ฌธ์ œ๋ผ๋ฉด ๋ช‡ ๋‹ฌ ์•ˆ์— ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

@jmorrell- ์ด ๋ฌธ์ œ๊ฐ€ ๋งŽ์€ ๊ด€์‹ฌ์„ ๋Œ๊ณ  ๋Œ€ํ™”๊ฐ€ ๊ณ„์† ๋‹ค์‹œ ์‹œ์ž‘๋˜๊ณ  ์‹ฌ์ง€์–ด ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์„ ๋ณด๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ •๋ณด๋กœ ์ง€๊ธˆ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

npm๋„ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์˜ค๋ฅ˜ ํ† ๋ก ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์„ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฐœ์ธ์ ์œผ๋กœ ํ•‘์„ ํ•ด์ฃผ์„ธ์š”.

์ด ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•˜๊ณ  ๊ธฐ์—ฌํ•˜๊ณ  ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ด๋ฒˆ ํ˜ธ ์ดํ›„์— ์‹ค์ด ๋” ์ข‹๋‹ค๊ณ  ๋Š๋‚๋‹ˆ๋‹ค.

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