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"
์ฅ์ :
๋จ์ :
์๋ง๋ ๋ ์ ์๋ํ๋ ๊ฒ์ ๋์น๊ณ ์์ ๊ฒ์ ๋๋ค.
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์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
package-lock.json
ํ์ผ์ ์ค์นํ๊ณ ์ฐพ์ ๋ ๊ฒฝ๊ณ package-lock.json
ํ์ผ์ ์ถ๊ฐํ๊ณ ์ฐพ์ ๋ ๊ฒฝ๊ณ 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์ด๋ผ๋ ์คํด๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ์ฉ ๋ช ๋ น์ ํตํด ํ๋ก์ ํธ๋ฅผ ๋ค๋ฅธ ํ๋ก์ ํธ๋ก ๊ฐ์ ธ ์ค๋ ค๋ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ๋ค ํ ์ ์์ง๋ง ํ์ฌ ํ์์ ์ ๊ธ ํ์ผ์ ์กฐ์ฉํ ๋ณํ (๋๋ ์ฝ๋)ํ๋ ๊ฒ์ ์ฌ๋์ ๋น๊ฒฐ์ ๋๋ค.
์ฌ๊ธฐ์์ ์ ๊ฐ ๋ค๋ฃจ๊ณ ์ถ์ ์ค์ํ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋น์ ์ด ๋งํ๋ฏ์ด ์ด๊ฒ์ ๋ค๋ฅธ ์ฃผ์ ์ด๋ฉฐ ๋๋ ๋ํ๋ฅผ ํ์ ์ํค๊ณ ์ถ์ง ์์ต๋๋ค. ๋ณ๋์ ๋ฌธ์ ์์ ๋ ผ์ ํ ์ ์์๊น์?
์ฌ๊ธฐ์์ ๋ํ๊ฐ ๋ค์ ํ์ ๋์๋ค๊ณ ์๊ฐํ๋ฏ๋ก ๋ช ๊ฐ์ง ์ค๋ช ๊ณผ ์์ฝ์ผ๋ก ์ ๋ฆฌํ๊ณ ์ถ์ต๋๋ค.
yarn.lock
๋ฐ package-lock.json
ํ์ผ์ ๋ชจ๋ ํน์ ๋ชฉํ๋ฅผ ์ผ๋์๋๊ณ ์์ฑ๋์์ผ๋ฉฐ ์ ๊ฐ ๋ณผ ์์๋ ํ ์ด๋ฌํ ๋ชฉํ๋ ์์ ํ ์ผ์นํ์ง๋ ์์ง๋ง ์ผ๋ถ ์ค๋ณต๋ฉ๋๋ค.์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ ํ์์ ๋ชจ๋ ์ ์งํ๋ ๊ฒ์ด ์ค์ ๋ก ํ์ ๊ณผ ๋ค์ํ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๋ฐ ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ํ ๊ฒ์ ๋ฌด๋ฃ ์คํ์ ํ์ฉํ๊ธฐ ์ํด ํน์ ํจํค์ง ๊ด๋ฆฌ์ ์ ๋ต์ ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ถ๊ณผํ์ง ์๊ณ ํจํค์ง ๊ด๋ฆฌ์ ๊ฐ์ ๋ฐ์ดํฐ ์์ค์ ์ต์ํํ๋ฉด์ ํ๋ก์ ํธ ์ด์์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ ๋๋ค.
๋ค๋ฅธ ์ ๊ธ ํ์ผ์ ๋ํ ์น์ธ ๋ฐ ๊ฒฝ๊ณ ์ ํจ๊ป ๋ณด์กด๋๋ ํญ๋ชฉ๊ณผ ์์ค ๋ ํญ๋ชฉ์ ๋ํ ๋ช ํํ ๋ฉ์์ง๊ฐ ๊ฐ ์ธก๋ฉด์ ์ฌ์ฉ์์๊ฒ ํฐ ๊ฐ์น๋ก ์ ๊ณต๋๋ ์ ์ ํ ๋ณํ๊ณผ ํจ๊ป ํ์๋ฉ๋๋ค. ์ด์ ์ด ๋ฌธ์ ์ ์ง๋ฌธ ์ ์ฌ์ฉ์๊ฐ 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 ์ ๋ค๋ฅธ ์์ ์ ์ดํดํฉ๋๋ค.
๋จ์ผ ์ ๊ธ ํ์ผ ํ์์ ์ ๊ธ ํ์ผ ํ์๊ฐ์ ์๋ก ๋ค๋ฅธ ์ฅ๋จ์ ์ด ์๊ณ ์ด๋ค ํ์์ด ๊ฐ์ฅ ์ข์์ง์ ๋ํ ํฉ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๊ฐ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
(์ ๋ "๋ ๋๊ตฌ๊ฐ ์๋ก์ ์ ๊ธ ํ์ผ์ ์ํธ ์ดํดํ ์์๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ๋ค"๋ ๋ฐ ๋์ํ์ง ์์ง๋ง).
๋๊ตฌ์ ๊ตฌ์ ๋ฐ์ง ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํ์ฉํ๋ ์ด์์ ์ธ ์๋๋ฆฌ์ค๋ฅผ ํ์คํ ๋ฌ์ฑ ํ ์์๋ ๊ฒฝ์ฐ (๋ค๋ฅธ ์ ๊ธ ํ์ผ์ด ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋น๋๋๊ณ ๋ค๋ฅธ ์ ๋ณด๋ฅผ ํฌํจํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ง์ ์๊ฒฌ์ ๋ณผ ์ ์์ต๋๋ค), ์ฐ๋ฆฌ๊ฐ ๊ฐ๊ณ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๊ณณ์ ๋ง์์ต๋๋ค.
์ด๋ค ์ํฉ์์๋ ๋ค๋ฅธ ์ฌ๋์ ์ ๊ธ ํ์ผ์ ๋ณํํ๊ณ ์ญ์ ํด์๋ ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ๊ฐ๋ฐ์๊ฐ ์ด๋ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋์ง์ ๋ฐ๋ผ ์๋ก์ด ๊ฐ๋ฐ์๊ฐ ํ๋์์ ๋ค๋ฅธ ๊ฒ์ผ๋ก ์์ํ ์ ํํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค (๋๋ฌด ๋ง์ ์ฌ๋๋ค์ด 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 ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
yarn.json
๋ฐ yarn.lock
)๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ ์ผ๋ก NPM์์ ๋ถ๊ธฐ์ฌ๊ธฐ์ ์ธ ๋ฒ์งธ ์ต์ ์ ์ ์ฒด ๋ ธ๋ ๊ณต๊ฐ์ ํผ๋ํ๊ณ ๋ ๋๊ตฌ๋ฅผ ์๋นํ ์ฝํ ์ํจ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ์ ํ ์ญ ํธํ์ด ๊ฐ๋ฅํฉ๋๋ค. 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 ๊ฐ์ง ๋ฑ๊ธ์ ์ฌ์ฉ์๊ฐ ์์ต๋๋ค.
๋๋ ์ ๋ง๋ก ๋ง์ง๋ง ์นดํ ๊ณ ๋ฆฌ์ ์๊ณ ์ถ์ง ์์ง๋ง ๊ทธ๊ฒ์ด ๋ด๊ฐ ๋ฐ๋ ค ์ค๋ ๊ณณ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@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 ๋ช ์ ๊ฐ๋ฐ์๋ฅผ ๋ํ๋ด๊ณ ์ถ์ธ๋ฅผ ๋ณด์ฌ์ค๋๋ค)
7 ์์ ํ๋ฝ์ S3์ ๊ด๋ จ์๋ ๋ฌธ์ ์์ ๋น๋กฏ๋ฉ๋๋ค.
7 ์ 25 ์ผ ์ดํ์ ์ถ์ธ๋ฅผ ์ดํด๋ณด๋ฉด์ด ๊ฒฝ๊ณ ๋์ด ์ค๋ฅ๋ฅผ ๊ฒฝํํ๋ ์ฌ๋๋ค์ ์์ ์๋นํ ์ํฅ์ ๋ฏธ์ณค์ต๋๋ค. ๋๋ ๋ณํ์ ๊ท๋ชจ์ ๋ค์ ๋๋๋ค.
@jmorrell- ์ด๊ฒ์ ์ ๋ง ๋๋จํฉ๋๋ค!
๋๋ ์ด๊ฒ์ ์๋นํ ๋๋๋ค๋ ๊ฒ์ ์ธ์ ํ ๊ฒ์ด๋ค.
๋๋ (์ค ์ธก์์)์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค๊ณ ์๊ฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋์ํ์ญ๋๊น?
๋๋ ์ฌ์ ํ ์ค๋ฅ๋ฅผ ์์ ํ๊ธฐ ์ํด package-lock.json
๋ฅผ ์ ๊ฑฐํ๋ผ๋ ์กฐ์ธ์ด ์คํด์ ์์ง๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ํจํค์ง ๋ฒ์ ์ธํธ๋ฅผ ์ฌ์ฉํ๊ฒ๋๋ฉฐ (๋ค์ ์ผ๋ฐ์ ์ผ๋ก) ๋น ํธํ์ฑ๊ณผ ํ์์ผ๋ก ์ด์ด์ง ๊ฒ์
๋๋ค. ๋ํ์ด ์กฐ์ธ์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ๊ฒฐ์ ํ๋ ์ฌ๋๋ค์๊ฒ๋ง ์ ์ฉํฉ๋๋ค. ์ด ์กฐ์ธ์ ๋ฐ๋ฅด๋ ์ผ๋ฐ ๊ธฐ์ฌ์๋ ๋ฌธ์ ์ ์ง๋ฉดํ๊ฒ ๋ ๊ฒ์
๋๋ค.
package-lock.json
๊ฐ ์๊ณ yarn
๊ฐ ์ค์นํ๋ ๋ฒ์ ์ด npm
๊ฐ ์ค์นํ ๋ฒ์ ๊ณผ ๋์ผํ๋ค๋ ๊ฒ์ ๋ณด์ฅ ํ ์์๋ ๊ฒฝ์ฐ IMO๋ ์ค๋ฅ์ ํจ๊ป ์คํจ ํฉ๋๋ค .
@Spongman์ ์ ๋ ฅ ํด ์ฃผ์ ์ ๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ์ฐ๋ฆฌ ์์์๋ (๋งค์ฐ ๊ธด) ์ค๋ ๋์์ ์ ๋ ผ์๋์๋ค๊ณ ์๊ฐํ๋ฉฐ ๋ค์ ์์ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐ๋ฆฌ ๋ชจ๋ ๋น์ ์ ์ ์ฅ์ ์ดํดํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฐธ์ฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
@jmorrell ์ด ๋ค์ ์ฃผ ์ ๋์ ์ ์๊ฒ ๋ฌ๋ฆฌ
@imsnif ์ง๊ธ๊น์ง 9 ์ (9 ์ 1 ์ผ-9 ์ 20 ์ผ)์ ์คํจ๋ฅผ ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ดํด
๋๋ ์ด๊ฒ์ ๋ํด npm์์ ์ด๋ค ์์ง์๋ ๋ณด์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๊ฑฐ๊ธฐ์ ๊ฒฝ๊ณ ๋ฅผ ์ถ๊ฐํ๋ PR์ ๋ง๋ค๊ณ ์๋ฝ๋๋ ๊ฒ์ ๋ณผ ๊ฒ์ ๋๋ค.
๋๋ (์ค ์ธก์์)์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค๊ณ ์๊ฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋์ํ์ญ๋๊น?
๋๋ ์ด๊ฒ์ด ์ฌ์ฉ์๋ฅผ ์ํด ํด๊ฒฐ๋์๋ค๊ณ ์๊ฐํ์ง ์์ผ๋ฉฐ ์ฌ์ฉ์ ๊ฒฝํ์ ์ฌ์ ํ โโ์ข์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ npm์ด์ด ์ผ์ด์ค๋ฅผ ์น๋ ์ฌ์ฉ์์๊ฒ ํผ๋๋ฐฑ์ ์ ๊ณตํ๋ฉด ์ซ์๊ฐ ์ด๋ป๊ฒ ๋ณํ๋ ์ง ๋ณผ ์ ์์ต๋๋ค.
์ด ํญ๋ชฉ์ ๋ซ๊ฑฐ๋ ์ถ๊ฐ ๋ณ๊ฒฝ์ ์ํ๋์ง ์ฌ๋ถ๋ ๊ทํ์๊ฒ ๋งก๊ธฐ๊ฒ ์ต๋๋ค. ์ด๊ฒ์ด ์ฌ์ ํ ์ฌ์ฉ์์๊ฒ ํฐ ๋ฌธ์ ๋ผ๋ฉด ๋ช ๋ฌ ์์ ์๋ก์ด ๋ฌธ์ ๋ฅผ ์ด๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค.
@jmorrell- ์ด ๋ฌธ์ ๊ฐ ๋ง์ ๊ด์ฌ์ ๋๊ณ ๋ํ๊ฐ ๊ณ์ ๋ค์ ์์๋๊ณ ์ฌ์ง์ด ๋ฐ๋ณต๋๋ ๊ฒ์ ๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ก ์ง๊ธ ์ข ๋ฃํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
npm๋ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ์๋ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ค๋ฅ ํ ๋ก ์ ๋ค์ ์์ํ๊ฑฐ๋ ๋ค๋ฅธ ์๋ฃจ์ ์ ์ดํด๋ณผ ๊ฒ์ ๋๋ค. ์ด ๊ฒฝ์ฐ ๊ฐ์ธ์ ์ผ๋ก ํ์ ํด์ฃผ์ธ์.
์ด ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๊ณ ๊ธฐ์ฌํ๊ณ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์ด๋ฒ ํธ ์ดํ์ ์ค์ด ๋ ์ข๋ค๊ณ ๋๋๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ชจ๋-์ฃผ์ ์ ์ง์คํ๊ณ ์ง์ ๊ด๋ จ์ด์๋ ๋๊ธ์ ์คํ๋ผ์ธ์ผ๋ก ์ฒ๋ฆฌํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค (์ : Discord ์ฑ๋). ๋ง์ ์ฌ๋๋ค์ด์ด ์ค๋ ๋๋ฅผ ๊ตฌ๋ ํ๊ณ ์์ผ๋ฉฐ ๊ณต์ ํ๊ฒ npm <> yarn ํ ๋ก ์ด ์ฌ๊ธฐ์ ์ํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ์ฌ!