_๊ธฐ๋ฅ_์ ์์ฒญํ์๊ฒ ์ต๋๊น? ์๋๋ฉด _๋ฒ๊ทธ_๋ฅผ ๋ณด๊ณ ํ์๊ฒ ์ต๋๊น?
_ํน์ง_
ํ์ฌ ํ๋์ ๋ฌด์์ ๋๊น?
install
๋ช
๋ น์ --pure-lockfile
๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด node_modules๋ฅผ ์ค์นํ๋ ๋์ ์ ๊ธ ํ์ผ์ ์์ ํ๊ธฐ ๋๋ฌธ์ ํผ๋์ค๋ฝ์ต๋๋ค.
์ฐ๋ฆฌ๋ add/upgrade/remove
๊ฐ ์ข
์์ฑ์ ๋ณ๊ฒฝํ๊ณ install
๊ฐ lockfile์์ node_modules๋ฅผ ์ผ๊ด๋๊ฒ ๋ค์ ๋น๋ํ๋ค๋ ์๋ฏธ๋ก ์ ๋์ํ์ต๋๋ค.
ํ๊ฒฝ(ํ์ฌ ์ค์น๋ ์์ฌ์ ๋ฒ์ )์ ๋ฐ๋ผ lockfile์ ์์ ํ๋ฉด ์ผ๊ด์ฑ์ด ์์ค๋ฉ๋๋ค.
์์๋๋ ๋์์ ๋ฌด์์ ๋๊น?
yarn install
ํ ๋ yarn.lock์ด๋ package.json์ ์ฐ์ง ๋ง์ธ์.
yarn.lock์ ์
๋ฐ์ดํธํ๋ ค๋ฉด yarn upgrade
node.js, ์์ฌ ๋ฐ ์ด์ ์ฒด์ ๋ฒ์ ์ ์ธ๊ธํ์ญ์์ค.
์ค 0.14
๋๋ ๋์ํ๋ค. yarn install
๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ธ ํ์ผ์ ์์ฑํ๋ ์ด์ ์ ๋ํ ๋
ผ์๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ ์ฒด ์ ๊ธ ํ์ผ ๊ฐ๋
๊ณผ ๋ชจ์๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒ์ ์ ์ ๊ทธ์ง ์๋ ๊ฒฝ์ฐ ์ ๊ธ ํ์ผ์ด ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
yarn install
๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์ ๊ธ ํ์ผ์ ์์ฑ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ฆ, ๋๊ตฐ๊ฐ yarn
๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ก์ ํธ๋ฅผ ๋ณํํ๋ ๊ฒฝ์ฐ์ด์ง๋ง ํญ์ ์์ฑํ๋ ์ด์ ๋ ๋ช
ํํ์ง ์์ต๋๋ค. add/upgrade/remove
๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ๊ฒฝ ์์
๋ง ์ ๊ธ ํ์ผ์ ์
๋ฐ์ดํธํด์ผ ํ๋ค๋ @bestander ์ ์๊ฒฌ์ ๋์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด Yarn์ ์
๊ทธ๋ ์ด๋ํ๊ณ ์ ์ ๊ธ ํ์ผ ๋ฒ์ ์ ์ฌ์ฉํ๋ ์๋๋ฆฌ์ค์์ add/remove/upgrade
์์ด ์ ๊ธ ํ์ผ์ ์์ ํ๋ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํฉ๋๊น?
๋๋ ์ต์ ์ด ์ญ์ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
yarn install --save-lockfile
2016๋ 10์ 17์ผ 18:53์ James Ide [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ถ๊ฐ/์ ๊ฑฐ/์ ๊ทธ๋ ์ด๋ ์์ด ์ ๊ธ ํ์ผ์ ์์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํฉ๋๋ค.
์: Yarn์ ์ ๊ทธ๋ ์ด๋ํ๊ณ ์ ์ ๊ธ ํ์ผ์ ์ฌ์ฉํ๋ ์๋๋ฆฌ์ค์์
๋ฒ์ ?โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/yarnpkg/yarn/issues/570#issuecomment -254282256 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/ACBdWJLpdvqiwcBwqE4KB3x3f4oCn_nVks5q07YYgaJpZM4KSlSw
.
์ ๋ ์ด๊ฒ ํท๊ฐ๋ฆฝ๋๋ค. ํ์ฌ ๊ธฐ๋ณธ ๋์์ ๋ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
Afaik, ๊ธฐ๋ณธ ๋์์ ๋ํ ๊ฐ๋ ฅํ ์ด์ ๋ ์์์ต๋๋ค.
์์ด๋์ด๋ ์ฌ๋๋ค์ ์ ๊ธ ํ์ผ์ "ํญ์ ๋
น์"์ผ๋ก ์ ์งํ๋ ๊ฒ์
๋๋ค.
BTW ํ๋ณด๋ฅผ ํ์ํฉ๋๋ค
๊ทธ ์ด์ ๋ ์์ฌ๊ฐ ์๋ install/add/upgrade
๋ก ๋ถํ ๋ ๋จ์ผ install
๋ช
๋ น์ผ๋ก ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋์, ๋ด๊ฐ ์ด๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋์ง ํ์ธํ๊ธฐ ์ํด :
yarn
๋ ๋ชจ๋ ์ข
์์ฑ์ ์ค์นํ๊ณ ์ ๊ธ ํ์ผ๋ ์์ ํฉ๋๋ค. CI ์๋ฒ์์๋ yarn install --pure-lockfile
๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๊น?
์ค์น ์ค์ ์ ๊ธ ํ์ผ์ด ์์ ๋๋ ์ด์ ๋ ๋ฌด์์
๋๊น? ์๋ฌด ๊ฒ๋ ์
๊ทธ๋ ์ด๋ํ์ง ์๊ธฐ ๋๋ฌธ์... Yarn์ ์ ๊ธ ํ์ผ์ ์ค๋ช
๋ ๋๋ก ํจํค์ง๋ฅผ ์ค์นํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ ์ฃ ?
์ค๋ช ๊ฐ์ฌํฉ๋๋ค!
๋ฌธ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ธ ํ์ผ์ด ์์ํ๋ฉด ๋ณ๋์ ๋ช ๋ น์ด ๋๋ฏ๋ก ์ฌ๋๋ค์ด ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ์์ด๋ฒ๋ฆด ๊ฒ์ ๋๋ค.
@kittens ์ ๊ธ ํ์ผ์ ํจํค์ง๋ฅผ ์ถ๊ฐ/์ ๊ฑฐ/์ ๊ทธ๋ ์ด๋ํ ๋๋ง ์ ๋ฐ์ดํธํ๋ฉด ์ ๋ฉ๋๊น? ์ ๊ธ ํ์ผ๊ณผ ์ด๊ธฐ ์ค์น๋ฅผ ํญ์ ์ ๊ทธ๋ ์ด๋ํด์ผ ํฉ๋๋ค.
๋ฌธ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ธ ํ์ผ์ด ์์ํ๋ฉด ๋ณ๋์ ๋ช ๋ น์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋๋ค์ด ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ์์ด๋ฒ๋ฆด ๊ฒ์ ๋๋ค.
๋ฌธ์ ๊ฐ ๋๋ ๊ฒ์ ํจํค์ง ๊ด๋ฆฌ์์ ์ฃผ์ ๋ชฉํ๋ก ๊ฐ์ฃผํ๋ ํญ๋ชฉ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ ์๊ฐ์๋ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ์ํํ๋ ์ญํ ์ค ํ๋๋ ํ๋ก์ ํธ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ ํ ์ฝ๊ฒ ์์ํ ์ ์๋๋ก ํ๋ ๊ฒ์
๋๋ค. ๊ฐ๋จํ yarn install
๋ ํผ๋ ์์ด ๊ฐ๋ฐ์ ์์ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ํจํค์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค.
npm
๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์ ๊ฐ๋ฐ์ ์ธ์คํด์ค๊ฐ ํ๋ก์ ํธ์ ์ฐธ์ฌํ์ง๋ง ํ๋ก์ ํธ๊ฐ ์์ ์ ์ปดํจํฐ์์ ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ด๋ฌํ ์ธ์คํด์ค๋ ์ผ์์ ์ธ ์ข
์์ฑ์ผ๋ก ์ธํด ๋ฒ์ ์ด ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๋ฒ์ ์ผ๋ก ์ถฉ๋ํ๊ฑฐ๋ ๋จ์ํ semver๋ฅผ ๋ฐ๋ฅด์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ์ต๋๋ค. yarn
๊ฐ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋์ง๋ง ํ๋ก์ ํธ์ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ yarn install --pure-lockfile
๋ฅผ ์คํํ์ฌ ํ๋ก์ ํธ๊ฐ ๋น๋๋ ๊ฒ์ด๋ผ๊ณ 100% ํ์ ํด์ผ ํ๋ค๋ ์ฌ์ค์ ์๋ฉด ๊ทธ๊ฑด ์๋๋๋ค. ๊ฒฝ์ฐ.
ํจํค์ง ๊ด๋ฆฌ์์ ๋ ๋ค๋ฅธ ์ญํ ์ ํ๋ก์ ํธ์ ์ข
์์ฑ์ ๋ํ ์ ์ด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์์ํ๊ฒ ๋ง๋ค์ด์ง ๊ฒฝ์ฐ ๊ฐ๋ฐ์๋ yarn outdated
์์ ์ค๋๋ ๋ฒ์ ์ ํ์ธํ ๋ค์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒํ ํ์ฌ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ค์๋ก ์ ๊ธ ํ์ผ์ ์ปค๋ฐํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด git commit -a
๋ฅผ ์ํํ๋ ๊ฒ์ ๊ธ์งํ๋ ๋์ ์ฃผ์ด์ง ๋ฆด๋ฆฌ์ค ๊ธฐ๊ฐ์ ๋ฒ์ ์ ๋ฒํํ ์ ์๋ ๋ชจ๋ ๊ถํ์ ๊ฐ๋ฐ์์๊ฒ ์ ๊ณตํ ์ ์์ต๋๋ค.
๋๋ @esphen์ด ๋งํ๋ ๋ชจ๋ ๊ฒ์ ๋์ํฉ๋๋ค. ๋๋ ์์ํ ๋์์ด Yarn์ ๊ธฐ๋ณธ์ด ์๋๋ผ๋ ์ฌ์ค์ ๋๋์ต๋๋ค. ์ด๋ฌํ ์ข ๋ฅ์ ์ผ๊ด์ฑ์ด Yarn์ด NPM์ ๋นํด ๊ฐ๋ ์ฃผ์ ์ด์ ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ ๋ณด๋ ๋ฐฉ์์ผ๋ก NPM์์ ์ ํํด์ผ ํ๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์ด์ ์ผ ๊ฒ์ ๋๋ค.
๋ฉฐ์น ๋์ yarn
๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ ํ ๋น๋๋ฅผ ๊นจ๊ณ ์์ ํ ๋๋์ต๋๋ค. ๋๋ ์์งํ --pure-lockfile
๊ฐ ๋ง์ ๋ฌธ์๋ฅผ ์ฝ์ ํ ๊ธฐ๋ณธ ๋์์ด๋ผ๊ณ ์๊ฐํ๊ณ , ์ด๋ป๊ฒ npm์ด shrinkwrap์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ๋ ๋์์ง์ ๋ํด ์๊ฐํ์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํด์ฃผ์ธ์ :)
@ide ์ฌ๋์ด ๋จ์ง NPM์ ์ฌ์ฉํ์ฌ ์
๋ฐ์ดํธ ๋ ์๋๋ฆฌ์ค๋ฅผ ์์ํด package.json
๋ฐฉ๋ฒ, yarn.lock
์
๋ฐ์ดํธ ๋ ๊ฒ์
๋๊น?
๋๊ตฐ๊ฐ๊ฐ ์๊ธฐ์น ์๊ฒ ์์ ๋๋ ์ ๊ธ ํ์ผ๋ก ์ด์ด์ง๋ ์๋๋ฆฌ์ค๋ฅผ ์์ฑํด ์ฃผ์๊ฒ ์ต๋๊น? ์ด๋ฌํ ๋ณํ๋ ์ฌ๊ฐํ ํ๋์ด๋ฉฐ ์์ ์ด ๋ฑ์ด๋๊ณ , ์ ๋ฐ์ดํธ ๋ ๊ฒ์ ๊ธฐ์ตํ๊ธฐ์ ๋ง์ ์ค๋ฒ ํค๋๋ฅผ ์๋ฏธํ๋ ๋ช ์ํ๋๋ก ์ ๋ฐ์ดํธ๋ฅผ ์๊ตฌํ์ฌ ์ ๊ธ ํ์ผ์ ๋ ๋ฒ์งธ ํด๋์ค ์๋ฏผ์ ์ํ
์์ ์ถ๊ฐ ์ ๋ณด: ์ฐ๋ฆฌ ๋น๋์๋ ํ์ ์ข
์์ฑ์ผ๋ก Github์ coffeescript๊ฐ ์์ต๋๋ค. coffeescript๋ ์ผ๋ถ ์ปค๋ฐ์ ํธ์ํ๊ณ ๋น๋ ํ๋ก์ธ์ค์์ yarn install
๋ง ์คํํ์ฌ ์์ ๋ yarn.lock
๋ฅผ ์ป์์ต๋๋ค.
diff --git a/foo/yarn.lock b/foo/yarn.lock
index ec667fa..bb1f6ae 100644
--- a/foo/yarn.lock
+++ b/foo/yarn.lock
@@ -930,9 +930,9 @@ code-point-at@^1.0.0:
version "1.6.3"
resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.6.3.tgz#6355d32cf1b04cdff6b484e5e711782b2f0c39be"
-"coffee-script<strong i="8">@github</strong>:jashkenas/coffeescript":
+coffee-script@jashkenas/coffeescript:
version "1.11.1"
- resolved "https://codeload.github.com/jashkenas/coffeescript/tar.gz/887052de079b2f0af9f080031a00bb7544eaca08"
+ resolved "https://codeload.github.com/jashkenas/coffeescript/tar.gz/0d132318ce8f7116a436d97db1f2a5c8b1dedf28"
[email protected]:
version "0.3.0"
๋๊ตฐ๊ฐ๊ฐ ์๊ธฐ์น ์๊ฒ ์์ ๋๋ ์ ๊ธ ํ์ผ๋ก ์ด์ด์ง๋ ์๋๋ฆฌ์ค๋ฅผ ์์ฑํด ์ฃผ์๊ฒ ์ต๋๊น? ์ด ๋ณ๊ฒฝ์ ์ฌ๊ฐํ ๊ฒ์ด๋ฉฐ ์ ๊ธ ํ์ผ์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ๋ช ์์ ์ผ๋ก ์๊ตฌํจ์ผ๋ก์จ ์ ๊ธ ํ์ผ์ 2๊ธ ์๋ฏผ์ผ๋ก ๋ง๋ญ๋๋ค.
๋๋ yarn install
๋ฅผ node_modules๋ฅผ ๋น๋ํ๋ ๋ช
๋ น์ผ๋ก ์ธ์ํฉ๋๋ค.
package.json, yarn.lock ๋ฐ cleanup node_modules๋ฅผ ์์ ํ๋ yarn add
๋ฐ yarn remove
์ ๋ฐ๋์
๋๋ค.
add
๋ฐ remove
๋ฌ๋ฆฌ ์ ๋ ํนํ ๋ถ์์ฉ์ด ์ ํ ์์๋์ง ์๋ CI์์ install
100๋ฐฐ ๋ ์์ฃผ ์คํํฉ๋๋ค.
๋ณํ๊ฐ ์์๋์ง ์๋ ๊ฒฝ์ฐ์ ์:
yarn install
๋ฅผ ์คํํ ๋๋ง๋ค yarn.lock์ ํญ๋ชฉ ์ฌ์ด์ ๊ณต๋ฐฑ์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ปค๋ฐํ์ง ์๋๋ก ๊ธฐ์ตํด์ผ ํ๋ ์์ ๋ yarn.lock ํ์ผ์ ์ป์ต๋๋ค.@๊ณ ์์ด
๋ฌธ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ธ ํ์ผ์ด ์์ํ๋ฉด ๋ณ๋์ ๋ช ๋ น์ด ๋๋ฏ๋ก ์ฌ๋๋ค์ด ์ ๋ฐ์ดํธํ๋ ๊ฒ์ ์์ด๋ฒ๋ฆด ๊ฒ์ ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ npm์ ์ฌ์ฉํ๊ณ package.json์ ์ ๋ฐ์ดํธํ๋ ์๋๋ฆฌ์ค๋ฅผ ์์ํด ๋ณด์ญ์์ค. yarn.lock์ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธ๋ฉ๋๊น?
yarn install
๊ฐ yarn.lock
์
๋ฐ์ดํธํ์ง ์์์ผ ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด yarn.lock
๊ฐ package.json
์ ๋๊ธฐํ๋์ง ์์ ๊ฒฝ์ฐ์๋ ์คํจํ์ฌ yarn install --save-lockfile
๋ชจ๋ ๊ฒ์ ๋ค์ ๋๊ธฐํํ๋ ค๋ฉด
+1 ์์ฌ ์ค์น๋ yarn.lock์ ๋ณ๊ฒฝํด์๋ ์ ๋ฉ๋๋ค.
์ ๊ธ ํ์ผ ์ ๋ฐ์ดํธ์ ๋ํด ๊ฑฑ์ ํ์ง ์์ต๋๋ค. ์ด์์ ์ผ๋ก ๊ทธ๋ฆฐํคํผ๋ deps๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ด ์์ ์ ์ํํ๊ณ ์ ๊ธ ํ์ผ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณํฉํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ํ์ฌ ์๊ฐ์ ์
๋ฐ์ดํธํ๊ณ ์ถ์ต๋๋ค. @kittens ์ ์ ๋ ๋ ๋ค --pure-lockfile
๊ฐ ๋ช ๊ฐ์ง ์ด์ ๋ก ๊ธฐ๋ณธ๊ฐ์ด _not_ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๋๋ค์ด ์ข
์์ฑ์ ์ถ๊ฐ/์ ๊ฑฐ/์
๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์ํฉ๋๋ค. ์ด์ ๋ํ ๋ช
๋ น์ด ์์ง๋ง ์์ผ๋ก โโ๋๋ Lerna ์ ๊ฐ์ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ package.json
๋ฅผ ์๋์ผ๋ก ์
๋ฐ์ดํธํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
๋๋ค.
Yarn๊ณผ npm ๋ชจ๋์์ package.json
์๋์ผ๋ก ์์ ํ๋ฉด ๋ค๋ฅธ ์ค์น๋ฅผ ์คํํ ๋ package.json
_syncs_ํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๊ทธ๋ฐ ์๋ฏธ์์ yarn install
๋ ๊ฑฐ์ yarn sync
๋ก ์ด๋ฆ์ด ๋ฐ๋ ์ ์์ต๋๋ค.
๋๊ธฐํ ์ฃผ์ ์ ๋ํด ์ ์ข
์์ฑ์ ์ฌ์ฉํ์ฌ ์ค์น๋ฅผ ์คํํ ๋ node_modules
๋๋ ํ ๋ฆฌ์ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. yarn.lock
๋ node_modules
์ ์กฐ์ ์ญํ ์ ํ๋ฏ๋ก ๋์ผํ ๋ฐฉ์์ผ๋ก ๋๊ธฐํ๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค.
๊ทํ์ package.json
๋ ์ง์ ํ ์ ๋ณด์ ๊ถ๊ทน์ ์ธ ์์ค์
๋๋ค. ์ฆ, yarn์ ๋ํ ์ธํฐํ์ด์ค์ด๋ฉฐ, ๊ตฌ์ฑ์ด๋ฉฐ ํญ์ ๊ด์ฌ์ ๊ฐ์ ธ์ผ ํ๋ ์ ์ผํ ๊ฒ์
๋๋ค. ์ด์์ ์ธ ์ธ๊ณ์์๋ ๋จ์ํ yarn.lock
๋ฅผ ์ปค๋ฐํ๊ณ ๋ค์๋ ๊ทธ๊ฒ์ ๋ํด ์๊ฐํ ํ์๊ฐ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก ์ ๋ ์ด ๋ฌธ์ ์ ๋ํด ์ง์ง๋ฅผ ํ๋ช ํ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฌ๊ธฐ์ ์ค์ ๋ก ๋ ผ์๋๊ณ ์๋ ๋ด์ฉ์ ๋ํด ํผ๋์ค๋ฌ์ํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก --pure-lockfile
๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํด์ Yarn์ด ์ผ๊ด๋๊ณ ์ ๋ขฐํ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ์ง ์๋๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ๋์ผํ package.json
๋ ๋์ผํ yarn.lock
๋์ด 100% ๋์ผํ node_modules
๊ฐ ๋ฉ๋๋ค.
package.json
๋ฅผ ์
๋ฐ์ดํธํ๋ฉด yarn.lock
ํ์ผ์ด ์
๋ฐ์ดํธ๋๊ณ node_modules
์
๋ฐ์ดํธ๋ฉ๋๋ค. ๊ทธ๊ฒ์ ์ฌ๋ฌผ์ ๋ํ ๋งค์ฐ ์์ฐ์ค๋ฌ์ด ์ง์์ด๋ฉฐ ์ฐ๋ฆฌ๋ ๊ทธ๋ ๊ฒ ์ ์งํด์ผ ํฉ๋๋ค
package.json
์
๋ฐ์ดํธํ์ง๋ง yarn install
๋ฅผ ์คํํ์ฌ ๋๊ตฐ๊ฐ๊ฐ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋ผ๊ณ ํ์ ํ๋ ๋ชจ๋ ๊ฒ์ ๋๊ธฐํํ์ง ์์์ ๋ CI๊ฐ ๋ค๋ฅธ ์ข
์์ฑ์ ์ป์ ์ ์๋ค๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ ๋ฌธ์ )-- ๋์ ๋ค๋ฅธ ์ฌ๋๋ค์ Yarn ํตํฉ์ ๋ํด ๋ค์ํ CI ๋๊ตฌ์ ๋ํด ์ด์ผ๊ธฐํด ์์ผ๋ฉฐ ์ฌ๋๋ค์ด ํฐ ๋ฌธ์ ๋ก ๋ณผ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก --pure-lockfile
๋ฅผ ์ฌ์ฉํ๋๋ก ์ฝ๊ฒ ํธ์ํ ์ ์์ต๋๋ค.
์ด ๋ณ๊ฒฝ์ ์ํํ๋ฉด ์ข ์์ฑ์ ๋ณ๊ฒฝํ ๋ ํจ์ฌ ๋ ์์ฃผ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ๊ฒ์ ๋๋ค. ๋ด๊ฐ ๋์ดํ ์ด์ ๋ก ๋๋ ์ฐ๋ฆฌ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ๋ซ์์ผ ํ๋ค๊ณ ๋งํฉ๋๋ค.
@jameskyle ๋ญ๊ฐ๋ฅผ ๋ช ํํ ํ ์ ์๋ค๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
package.json
์ข
์์ฑ์ด ํฌํจ ๋ "foo": "^1.0.0"
yarn install
ํฉ๋๋ค. foo
ํจํค์ง๋ ํ์ฌ ๋ฒ์ 1.0.0
์ด๋ฏ๋ก [email protected]
์ ๊ธฐ๋ yarn.lock
ํ์ผ์ ๋ง๋ญ๋๋ค.yarn.lock
๋ฅผ ์ถ๊ฐํฉ๋๋ค.yarn install
๋ฅผ ์คํํ์ง๋ง foo
๋ ์ด์ 1.1.0
๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธ๋์์ผ๋ฏ๋ก Yarn์ [email protected]
ํ๊ณ yarn.lock
๋ฅผ ์ ๋ฒ์ ์ผ๋ก ๋ฎ์ด์๋๋ค. foo
foo
๋ฒ์ 1.1.0
์์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ผ๋ฏ๋ก CI๊ฐ ์ค๋จ๋ฉ๋๋ค.๋น์ทํ ์ํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"foo": "^1.0.0"
์ข
์์ฑ์ ํฌํจํ๋ package.json
๊ฐ์ง๊ณ ์์ผ๋ฉฐ [email protected]
๋ก ์ ๊ฒจ ์๊ณ yarn.lock
๋ Git์ ์ ์ฅ๋์ด ์์ต๋๋ค.yarn install
๋ฅผ ์คํํ๋ฉด yarn.lock
๊ฐ ์
๋ฐ์ดํธ๋๋ [email protected]
๋ฒ์ ์ด ์์ฑ๋ฉ๋๋ค.foo
๋ฒ์ 1.1.0
์์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์๊ธฐ ๋๋ฌธ์ ์ด์ ๊ธฐ๊ณ ์์ ๋น๋๊ฐ ์์๋์์ต๋๋ค.๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ๊ฑฑ์ ํ๋ ์ํฉ์ด ๋ฐ๋ก ๊ทธ๋ฐ ์ํฉ์ธ ๊ฒ ๊ฐ์์.
๋ฐ๋ผ์ yarn install
์ ํ์ฌ ๋์์ ์์ ๋ฌธ์ ๊ฐ ์์ ์ ๋ช
ํํ ํ ์ ์๋ค๋ฉด ๋๋ถ๋ถ์ ๋๋ ค์์ด ์ ๊ฑฐ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. :+1:
์ด๋ฌํ ์ํฉ ์ค ์ด๋ ๊ฒ๋ ์ ์ฉ๋์ง ์์ต๋๋ค. ์ข
์์ฑ์ด ์
๋ฐ์ดํธ๋์๋ค๊ณ ํด์ package.json
๋ณ๊ฒฝํ ๊ฒฝ์ฐ์๋ง ํด๋น ์ข
์์ฑ์ ์ป์ ์ ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค.
๋ด๊ฐ ๋งํ๋ฏ์ด ์ด๊ฒ์ ์ค์ ์๋๋ฆฌ์ค๊ฐ ์๋ ์ฌ๋๋ค์ด ๊ฐ์ง๊ณ ์๋ ์ ์ผํ ๊ด์ฌ์ฌ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ฅผ ๋ซ์ ๊ฒ์ ๋๋ค. ์ด ๋ฌธ์ ๋ ๋ ๋ง์ ํผ๋์ ์ผ๊ธฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์์์ ๋ณด๊ณ ํ ๊ฒ์ฒ๋ผ github์์ ์ข ์์ฑ์ ์ค์นํ๋ ๊ฒฝ์ฐ ์๋ชป๋ ๋์์ด ์์ต๋๋ค.
@adamchainz ๋ฐ๋ก ์์ ํด์ผ ํ๋ฏ๋ก ์ปค๋ฐ์ ์ฝ๊ฒ ์ ๊ธ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ํฉ ์ค ์ด๋ ๊ฒ๋ ์ ์ฉ๋์ง ์์ต๋๋ค. ์ข ์์ฑ์ด ์ ๋ฐ์ดํธ๋์๋ค๊ณ ํด์
package.json
๋ณ๊ฒฝํ ๊ฒฝ์ฐ์๋ง ํด๋น ์ข ์์ฑ์ ์ป์ ์ ์๋ค๋ ์๋ฏธ๋ ์๋๋๋ค.
@jameskyle : ์ด๊ฒ์ด ์ค์ ์๋๋ฆฌ์ค๊ฐ ์๋ ์ด์ ๋ฅผ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
์
๋ ฅ์ด package.json
์ด๊ณ ์ถ๋ ฅ์ด yarn.lock
๋ฉ๋ชจ ์์ฑ ๊ธฐ๋ฅ์ ์์ํด๋ณด์ญ์์ค.
package.json
๊ทธ๊ฒ์ด ์์ฑ yarn.lock
ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์บ์ํฉ๋๋ค.package.json
๋ฅผ ์คํํ ๋ ๊ฒฐ๊ณผ๋ ์บ์๋๊ธฐ ๋๋ฌธ์ ์ ํํ ๋์ผํฉ๋๋ค.package.json
๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์บ์๊ฐ ๋ฌดํจํ๋์์ผ๋ฉฐ ์ด์ yarn.lock
๊ฐ ๋ค์ ๊ณ์ฐ๋ฉ๋๋ค.์ง๊ธ ์ฐ๋ฆฌ๊ฐ ์ด์ผ๊ธฐํ๋ ๊ฒ์ # 3์ ์์ ๊ณ ๋์ yarn.lock
๋ฅผ ๋ณ๊ฒฝ๋ package.json
์ํด ๋ฌดํจํ๋์ง ์์ ๊ฒ์ฒ๋ผ ์ทจ๊ธํ๋ ๊ฒ์
๋๋ค. ๋ฉ๋ชจ์ด์ฆ ๊ธฐ๋ฅ์ด ์์ผ๋ฉด ์ ๋ง ์ด์ํ ๊ฒ์ด๊ณ Yarn์๋ ์ ๋ง ์ด์ํ ํ๋์ด ๋ ๊ฒ์
๋๋ค.
์ปค๋ฐ ๋ฐ ์ ๋ฒ์ ์ธก๋ฉด์์ ํจํค์ง์ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง _should_๋ ๊ด๋ จ์ด ์์ต๋๋ค(git ์ปค๋ฐ์ ๋ฒ๊ทธ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ณ๋๋ก ์์ ํด์ผ ํ์ง๋ง ์ด ๋ฌธ์ ์ ๊ด๋ จ์ด ์์ต๋๋ค).
๋ด๊ฐ ๋ง๋ ๊ฒ๋ณด๋ค ๋ ๋ณต์กํ์ง๋ง(๊ฐ ํจํค์ง ๋ฒ์ ์ ๊ฐ๋ณ์ ์ผ๋ก ํจ๊ณผ์ ์ผ๋ก "๊ธฐ์ต"๋๊ณ , ํ ํจํค์ง์ ๋ฒ์ ์ ๋ณ๊ฒฝํด๋ ๋๋จธ์ง๋ ๋ฌดํจํ๋์ง ์์) ์ด์ ๋ชจ๋ ์ฌ๋์ด ์์ ์ ์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@thejameskyle : ๋ช
ํํจ(๊ทธ๋ฆฌ๊ณ ํธ๊ธฐ์ฌ)์ ์ํด yarn.lock
ํ์ผ์ด ์๋ ํ๋ก์ ํธ๊ฐ ์๊ณ ๋๊ตฐ๊ฐ๊ฐ ์ ์ฅ์๋ฅผ ํ๋ค์ดํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. yarn install
๋๋ npm install
์คํํ์ง ์๊ณ ์ด ์ฌ๋์ package.json
ํ์ผ์ ์ ์ข
์์ฑ์ ์ถ๊ฐํ ๋ค์ yarn install
ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๊ธฐ์กด yarn.lock
ํ์ผ์ด ์์ ํ ๋ฌด์๋ฉ๋๊น?
์ฌ๊ธฐ์์ ๋ด๊ฐ ํ๊ณ ์ ํ๋ ๋ค์ํ ์ผ๋ค์ด ์ผ์ด๋๊ณ ์์ต๋๋ค(๋ง์ฅ๋ ์๋ ์์).
์ฒซ์งธ, ์ฌ๋๋ค์ ๋ ผ์์ ์ฌ์ง๊ฐ ์๋ค๊ณ ์๊ฐํ๋ ์ฌ๋ฌ ๊ฐ์ง ์๊ตฌ ์ฌํญ์ ์ ๊ธฐํ์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ์ด๋ก ์ธํด ๊ธฐ์กด ๋์์ ์ผ๋ถ๊ฐ ๋ฒ๊ทธ๊ฐ ๋๋ฉฐ, ์ด์ ๋ํด์๋ ๊ณง ๋ค๋ฃจ๊ฒ ๋ ๊ฒ์ ๋๋ค).
์๋ ๋ฒ๊ทธ ๋ณด๊ณ ์์์.
ํ๊ฒฝ(ํ์ฌ ์ค์น๋ ์์ฌ์ ๋ฒ์ )์ ๋ฐ๋ผ lockfile์ ์์ ํ๋ฉด ์ผ๊ด์ฑ์ด ์์ค๋ฉ๋๋ค.
์์๋๋ ๋์์ ๋ฌด์์ ๋๊น?
์์ฌ ์ค์น ์ yarn.lock ๋๋ package.json์ ์์ฑํ์ง ๋ง์ญ์์ค.
yarn.lock์ ์ ๋ฐ์ดํธํ๋ ค๋ฉด yarn upgrade๋ฅผ ์ฌ์ฉํ์ญ์์ค.
๋ ์ ํํ๊ฒ ๋งํ๋ฉด ์์๋๋ ์๋ฏธ๋ก ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
package.json
์ด yarn.lock
๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ณ๊ฒฝ๋ ์ดํ๋ก ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ yarn.lock
๋ ์ง์ค์ ์์ค์ด๋ฏ๋ก ์
๋ฐ์ดํธํด์๋ ์ ๋ฉ๋๋ค.package.json
์ง๋ ์ดํ์ ๋ณ๊ฒฝ๋ yarn.lock
๋ณ๊ฒฝ ์
๋ฐ์ดํธ yarn.lock
๋ง์กฑ ๋๋ฌด package.json
๋ฐ ๊ฐฑ์ node_modules
.yarn update
๊ฐ ์คํ๋๋ฉด ๋ชจ๋ ์ข
์์ฑ์ ๋ค์ ํด๊ฒฐํ๊ณ package.json
๋ฅผ ์ถฉ์กฑํ๋ ๋ชจ๋ ํญ๋ชฉ์ ์ต์ ๋ฒ์ ์ ๊ฐ์ ธ์ต๋๋ค.์ด๊ฒ์ ์ ์ฅ์๊ฐ ๋จธ์ ์์ yarn.lock
๊ฐ ์ฒดํฌ์ธ๋ ๊ฒฝ์ฐ, yarn์ ํญ์ ์ด๋ฅผ ์์ค๋ก ์ทจ๊ธํด์ผ ํ๋ฉฐ yarn.lock
๋ํ ์
๋ฐ์ดํธ๋ฅผ ์์ฑํ์ง ์๊ณ ์ ํํด์ผ ํฉ๋๋ค. ๊ฐ์ ธ์ค๊ธฐ ๋จ๊ณ๋ก ์ง์ ์ด๋ํฉ๋๋ค.
์ด๊ฒ์ด ํ์ฌ yarn์ ๋์์ด ์๋ ํ ๋ฒ๊ทธ๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@esphen ์ ๋ค์
๋๋ ๋์ํ๋ค. ์ ์ฒด ์ ๊ธ ํ์ผ ๊ฐ๋ ๊ณผ ์๋ฐ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ฒ์์ yarn install์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ธ ํ์ผ์ ์์ฑํ๋ ์ด์ ์ ๋ํ ๋ ผ์๊ฐ ์์ด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒ์ ์ ์ ๊ทธ์ง ์๋ ๊ฒฝ์ฐ ์ ๊ธ ํ์ผ์ด ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ด๊ฒ์ด ๋งํ๋ ค๋ ๊ฒ์ ๊ธฐ์กด์ ์ ๊ธ ํ์ผ์ด ์ฌ์ ํ ์ต์ ์ํ๋ผ๋ฉด ์์ฌ๊ฐ ์ ์ ๊ธ ํ์ผ์ ์์ฑํด์๋ ์ ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋์ํฉ๋๋ค.
๋๋ ๋ณ๊ฒฝ ์์ ๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ธ ํ์ผ์ ์ ๋ฐ์ดํธํด์ผ ํ๋ค๋ @bestander ์ ์๊ฒฌ์ ๋์ํฉ๋๋ค(์: ์ถ๊ฐ/์ ๊ทธ๋ ์ด๋/์ ๊ฑฐ).
์ฌ๊ธฐ์ ์ค์ํ ๋ฌธ์ ๋ package.json
๋ํ ๋ณ๊ฒฝ์ผ๋ก ์ธํด yarn.lock
๊ฐ ์
๋ฐ์ดํธ๋์ด์ผ ํ๋์ง ์ฌ๋ถ์
๋๋ค. ์ ์๊ฐ์๋ package.json
๋ํ ๋ณ๊ฒฝ ์ฌํญ์ด yarn.lock
์ํด ๋ง์กฑ๋์ง ์์ผ๋ฉด yarn.lock
์
๋ฐ์ดํธ ํด์ผ ํฉ๋๋ค .
์์ฌ์ ๊ฐ์ ์ ๊ธ ํ์ผ ์์คํ
์ ์ค์ํ ๋ถ๋ณ์ฑ์ ์ผ๋ฐ์ ์ธ ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ฑ์ ์คํํ ๋ ์ค์ ๋ก ์ฌ์ฉ๋๋ ํจํค์ง๊ฐ package.json
์ง์ ๋ ๋ฒ์ ๊ณผ ์ผ์นํ๋์ง ํ์ธํ package.json
๊ฐ yarn.lock
์ ๋๊ธฐํ๋์ง ์๋ ๊ฒ์ด ํ์ฉ๋๋ฉด ์ด๊ฒ์ ์ฌ์ค์ด ์๋๋ฉฐ ์ฌ๋ ๋
์๊ฐ yarn.lock
๋ฅผ ์ฃผ์ ๊น๊ฒ ์ฝ์ด์ผ ํ๋ค๋ ๊ฒ์ ์ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์
๋๋ค.
๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ์ ๊ธ ํ์ผ์ ๋ํด ์๊ฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ํ์ฌ package.json
์ฌ์ฉ๋ ๋ชจ๋ ํจํค์ง์ ์ ํํ ๋ฒ์ ์ ๋ํ๋ด๋ ์คํ ์ค์ ์ํฐํฉํธ๋ผ๋ ๊ฒ์
๋๋ค. ์ฒดํฌ์ธํ๋ฉด ๋ค๋ฅธ ๊ณต๋ ์์
์, CI ๋ฐ ํ๋ก๋์
์ฝ๋์์ ๋์ผํ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@Guuz ๋ ๋ค์๊ณผ
๊ทธ๋์, ๋ด๊ฐ ์ด๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋์ง ํ์ธํ๊ธฐ ์ํด :
yarn์ ๋ชจ๋ ์ข ์์ฑ์ ์ค์นํ๊ณ ์ ๊ธ ํ์ผ๋ ์์ ํฉ๋๋ค. CI ์๋ฒ์์๋ yarn install --pure-lockfile?์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ด ์ง๋ฌธ์ ์ด ์ค๋ ๋์์ ๋ช๋ช ์ฌ๋๋ค์ด ํ ๊ฐ์ ์ ๋ฐ์ํฉ๋๋ค.
Cargo์๋ " package.json
๊ฐ yarn.lock
์ํด ๋ง์กฑ๋์ง ์์ผ๋ฉด ํ๋ ์ค๋ฅ์
๋๋ค"๋ผ๋ --locked
ํ๋๊ทธ๊ฐ ์์ต๋๋ค. Bundler์๋ ์ ์ฌํ ํ๋๊ทธ( --frozen
)๊ฐ ์์ต๋๋ค. ์ด๋ Heroku๊ฐ Bundler๋ฅผ ์ฑํํ ๋ ์ถ๊ฐ๋์ด Gemfile
๋ฅผ ๋ก์ปฌ๋ก ๋ณ๊ฒฝํ๊ณ Gemfile.lock
๋ฅผ ํ์ธํ๋ ๊ฒ์ ์์์ ๋ ์ฌ๋๋ค์๊ฒ ์ฌ๊ฐํ ์ค๋ฅ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์ด๋์ด๋ ์ ์์ ์ธ ๊ฐ๋ฐ ์ค์ package.json
๋ณ๊ฒฝํ ์ ์๊ณ ์์ฌ์์ yarn.lock
๊ฐ ๋๊ธฐํ ์ํ๋ฅผ ์ ์งํ๋๋ก ํ๋ ค๋ ๊ฒ์
๋๋ค(๋ค์, ์ง์ ๋ ๋ฒ์ ์ด package.json
ํญ์ ์ค์ ๋ก ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ์ผ์นํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ฐฐํฌํ ๋ package.json
๋ณ๊ฒฝํ๊ณ ๋ก์ปฌ yarn
๋ช
๋ น์ ์คํํ์ผ๋ฉฐ yarn.lock
์ฒดํฌ์ธ์ ์์ด๋ฒ๋ ธ๊ธฐ ๋๋ฌธ์ ๋ถ๊ธฐ๋ ๊ฒ์ ๊ฑฐ์ ํญ์ ์ค๋ฅ์
๋๋ค yarn
. ์ด๊ฒ์ package.json
๋ฒ์ ์ด ์ ํ๋ฆฌ์ผ์ด์
์ด ์คํ๋ ๋ ์ฌ์ฉ๋ ์ค์ ๋ฒ์ ๊ณผ ์ผ์นํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ ๋งํ๋ ์์ฌ์ ๊ธฐ๋ณธ ๋ถ๋ณ์ฑ์ ์๋ฐํ๋ค๊ณ ๋งํ์ต๋๋ค.
@esphen ์ ๋ค์๊ณผ
์ ์๊ฐ์๋ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ์ํํ๋ ์ญํ ์ค ํ๋๋ ํ๋ก์ ํธ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ ํ ์ฝ๊ฒ ์์ํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๊ฐ๋จํ ์์ฌ ์ค์น๋ก ํผ๋ ์์ด ๊ฐ๋ฐ์ ์์ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ํจํค์ง๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ๋ ผ์์ ์ฌ์ง๊ฐ ์๋ค๊ณ ์๊ฐํ๋ค.
npm์ ์ฌ์ฉํ์ฌ ๋ง์ ๊ฐ๋ฐ์ ์ธ์คํด์ค๊ฐ ํ๋ก์ ํธ์ ์ฐธ์ฌํ์ง๋ง ํ๋ก์ ํธ๊ฐ ์์ ์ ์ปดํจํฐ์์ ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ด๋ฌํ ์ธ์คํด์ค๋ ์ผ์์ ์ธ ์ข ์์ฑ์ผ๋ก ์ธํด ๋ฒ์ ์ด ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๋ฒ์ ์ผ๋ก ์ถฉ๋ํ๊ฑฐ๋ ๋จ์ํ semver๋ฅผ ๋ฐ๋ฅด์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ์ต๋๋ค. ์ ๋ yarn์ด ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋์ง๋ง ํ๋ก์ ํธ์ ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ yarn install --pure-lockfile ์ ์คํํ์ฌ ํ๋ก์ ํธ๊ฐ ๋น๋๋ ๊ฒ์ด๋ผ๊ณ 100% ํ์ ํด์ผ ํ๋ค๋ฉด ๊ทธ๊ฒ์ ์ฌ์ค์ด ์๋๋๋ค.
yarn install --pure-lockfile
์คํํ๋ฉด ์ ๊ธ ํ์ผ ๋ด๋ถ์ ๋ฒ์ ์ด package.json
์ง์ ๋ ๋ฒ์ ๊ณผ ์ถฉ๋ํ๋๋ผ๋ ์ ๊ธ ํ์ผ์ด ์กด์ค๋ฉ๋๋ค. ๊ฐ๋ฐ์ ์์ด๋ค์ด ์ฒดํฌ์ธ ๊ฒฝ์ฐ์๋ง ์ฒซ ๋ฒ์งธ ์ฅ์์์ ๋ฐ์ํ๋ค yarn.lock
๋ฐ๋ ์ฌ๋ ๋ณ๊ฒฝ ํ ํ package.json
.
ํจํค์ง ๊ด๋ฆฌ์์ ๋ ๋ค๋ฅธ ์ญํ ์ ํ๋ก์ ํธ์ ์ข ์์ฑ์ ๋ํ ์ ์ด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์์ํ๊ฒ ๋ง๋ค์ด์ง๋ฉด ๊ฐ๋ฐ์๋ ์ค๋๋ ๋ฒ์ ์ ํ์ธํ๊ธฐ ์ํด ์์ฌ๋ฅผ ์ดํด๋ณธ ๋ค์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒํ ํ์ฌ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ํผํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฐ๋ฐ์ ์ธ ์ ๊ธ ํ์ผ ์ปค๋ฐ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ฐ๋ฐ์๊ฐ git commit -a๋ฅผ ์ํํ๋ ๊ฒ์ ๊ธ์งํ๋ ๋์ ์ง์ ๋ ๋ฆด๋ฆฌ์ค ๊ธฐ๊ฐ์ ๋ฒ์ ์ ๋ฒํํ ์ ์๋ ๋ชจ๋ ๊ถํ์ด ๊ฐ๋ฐ์์๊ฒ ์ ๊ณต๋ฉ๋๋ค.
package.json
๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ค๋ฉด ์ ์๊ฐ์๋ yarn.lock
๊ฐ ์
๋ฐ์ดํธ๋๋ฉด ๋ฒ๊ทธ์
๋๋ค. ๋ฒ๊ทธ์ ์ ์ด๋ ํ๋์ ๊ฒฝ์ฐ๊ฐ ์๋ ๋ณด๊ณ ์์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
lockfile์ ํ๊ฒฝ(ํ์ฌ ์ค์น๋ yarn์ ๋ฒ์ )์ ๋ฐ๋ผ ์์ ๋ฉ๋๋ค.
์ด๊ฒ์ ์ค๋ฅ์ด๋ฉฐ ์์ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋์ค์ ์ค๋ ๋์์ @thejameskyle ์ ๋ค์๊ณผ
์ ๋ ฅ์ด package.json์ด๊ณ ์ถ๋ ฅ์ด yarn.lock์ธ ๋ฉ๋ชจ์ด์ฆ ํจ์๋ฅผ ์์ํด ๋ณด์ธ์.
๊ทธ๊ฑด ๋ด๋ณด๊ธฐ์, ์ ํํ ์ฌ๋ฐ๋ฅธ ์ ์ ๋ชจ๋ธ์ด๋ค ( " yarn.lock
์ ๊ฒฝ์ฐ์๋ง ๊ฒฝ์ฐ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค package.json
๋ณ๊ฒฝ"), ๊ทธ๋ฆฌ๊ณ ์ถ์ํ ๋์ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ์์ ํด์ผํฉ๋๋ค.
@adamchainz ๋ ๋ค์๊ณผ
์์ ์ถ๊ฐ ์ ๋ณด: ์ฐ๋ฆฌ ๋น๋์๋ ํ์ ์ข ์์ฑ์ผ๋ก Github์ coffeescript๊ฐ ์์ต๋๋ค. coffeescript๋ ์ผ๋ถ ์ปค๋ฐ์ ํธ์ํ๊ณ ์ฐ๋ฆฌ๋ ๋จ์ง yarn install์ ์คํํ์ฌ ๋น๋ ํ๋ก์ธ์ค์์ ์์ ๋ yarn.lock์ ์ป์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ค์:
๊ทธ๋ฌ๋ ์์์ ๋ณด๊ณ ํ ๊ฒ์ฒ๋ผ github์์ ์ข ์์ฑ์ ์ค์นํ๋ ๊ฒฝ์ฐ ์๋ชป๋ ๋์์ด ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ๋ yarn์ด git sha๋ฅผ ์ ๊ธด ๋ฒ์ ์ git ์ข
์์ฑ์ ์ผ๋ถ๋ก ์ทจ๊ธํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. Cargo์ Bundler๋ ๋ชจ๋ ์ ๊ธ ํ์ผ๋ก ์ง๋ ฌํ๋๋ "์ ํํ" ๋ฒ์ ์ ๊ฐ๋
์ ๊ฐ์ง๊ณ ์์ต๋๋ค. git ์์ค์ ๊ฒฝ์ฐ "์ ํํ" ๋ฒ์ ์ SHA์
๋๋ค. ๋น์ ์ด ์๋ก์ด ํด๋ก ์ ํ ๋ ๊ทธ๋ฐ ๋ค์, ๋จ์ง package.json
๋ฐ yarn.lock
์คํ yarn
, ๋น์ ์ด ํ์๋ก ์ ํํ๊ฒ ์ฝ๋๋ฅผ ์ป์ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ์์ต๋๋ค.
์๋ณธ git ์ฝ๋๋ฅผ ๊ฒํ ํ ๋ ์ด ์ํธ ์์ฉ์ ๋์ณค๋ค๋ ๊ฒ์ ๊ณ ๋ฐฑํด์ผ ํฉ๋๋ค. ์ฝ๋์ ์ผ๋ถ SHA ์ถ์ ์ด ์์ง๋ง yarn install
๋ ์ํ ์ข
์์ฑ ๊ทธ๋ํ๊ฐ ์ด๋ฅผ ์ค์ํ๋์ง ํ์ธํ์ง ์์ต๋๋ค.
TL;DR
๋๋ yarn.lock
๊ฐ package.json
์๋์ผ๋ก ๋๊ธฐํ๋์ด์ผ ํ๋ค๋ @thejameskyle ๋ฐ @kittens์ ์๊ฒฌ์ ๋์ํฉ๋๋ค. ์๋ํ๋ฉด ์ ๋ ์ฌ์ฉ์๊ฐ package.json
์ง์ ๋ ๋ฒ์ ์ ๊ฐ์ ํ ์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฑ์ด ์คํ๋ ๋ ๋ฌด์์ ์ฌ์ฉํ๋์ง ์ ๋ ฌํ์ญ์์ค.
๊ทธ๋ฌ๋ package.json
๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ์๋ yarn.lock
์์ ๋ถ์ ์ ํ ์ดํ์ ์ผ์ผํค๋ ๋ช ๊ฐ์ง ๋ฒ๊ทธ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
package.json
๊ฐ ์
๋ฐ์ดํธ๋์ง ์์ ๊ฒฝ์ฐ์๋ git ์ข
์์ฑ์ด ์
๋ฐ์ดํธ๋์ด ์ ๊ธ ํ์ผ์ด ์
๋ฐ์ดํธ๋ฉ๋๋ค.๋ํ Cargo์ --locked
ํ๋๊ทธ์ ๊ฐ์ ๊ฒ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ฐ๋ฐ์๊ฐ package.json
์
๋ฐ์ดํธํ๊ณ ์
๋ฐ์ดํธ๋ yarn.lock
์ ํ์ธํ๋ ๊ฒ์ ์์ด๋ฒ๋ฆฐ ๊ฒฝ์ฐ CI์์ ๋น๋๋ฅผ ๋น ๋ฅด๊ฒ ์คํจํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค
@jameskyle ๊ฐ์ฌํฉ๋๋ค! :heart: package.json
๋ณ๊ฒฝ ํ yarn.lock
์ ์
๋ฐ์ดํธํด์ผ ํ๋ค๋ ๊ทํ์ @kittens์ ์๊ฒฌ์ ๋์ํฉ๋๋ค.
@wycats ํ์์ ๊ฐ์ด ๋งค์ฐ ์ฒ ์ ํ๊ณ ํต์ฐฐ๋ ฅ ์๋ ๊ฒ์๋ฌผ์
๋๋ค. :+1: ๋๋ ๋น์ ์ ์๊ฒฌ์ ๋์ํ๊ณ --locked
ํ๋๊ทธ(๋๋ ์ด์ ์ ์ฌํ ๊ฒ)์ ๋ํ ์์ด๋์ด๋ ์ข์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ํด ์๋ก์ด ๋ฌธ์ ๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
git SHA ๋ฌธ์ ๋ฅผ ์ถ์ ํ๊ธฐ ์ํด #1568์ ๋ง๋ค์์ต๋๋ค.
@wycats , ๋งค์ฐ ํต์ฐฐ๋ ฅ ์๋ ๊ฐ์๋ฅผ ํ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ด๋ ์ ์ฅ์๊ฐ ๋จธ์ ์์ ์ฒ์ ๋ณต์ ๋ ๋ yarn.lock์ด ์ฒดํฌ์ธ๋ ๊ฒฝ์ฐ, yarn์ ํญ์ ์ด๋ฅผ ์๋ณธ์ผ๋ก ์ทจ๊ธํ๊ณ , yarn.lock์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์์ฑํ์ง ์๊ณ , ๊ฐ์ ธ์ค๊ธฐ ๋จ๊ณ๋ก ์ง์ ์ด๋ํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
์ด๊ฒ์ด ํ์ฌ yarn์ ๋์์ด ์๋ ํ ๋ฒ๊ทธ๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ์ด ๋ฌธ์ ๊ฐ ๊ณต๊ฐ๋ ์๋๋ฆฌ์ค์
๋๋ค.
ํ์ฌ์๋ ๋ช ๊ฐ์ง ํ์ฑ ๋ฒ์ ์ Yarn์ด ์์ผ๋ฉฐ ์ฐ๋ฆฌ ๊ท๋ชจ๋ก๋ ๋ชจ๋ ๊ณณ์์ ์์์ ์
๋ฐ์ดํธ๋ฅผ ์ํํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
yarn 0.13, 0.14 ๋ฐ 0.15๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋น๋ํ๋ฉด package.json์ด ๋๊ธฐํ๋ ๊ฒฝ์ฐ์๋ yarn.lock ํ์ผ์ ์ฝ๊ฐ์ ๋ณํ์ด ๋์
๋์์ต๋๋ค.
์ด๋ก ์ธํด ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์๋ฅผ ๋ค์ด ์์ค ํธ๋ฆฌ์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์บ์๊ฐ ๋ฌดํจํ๋์ด Buck ๋น๋ ์๋๊ฐ ๋๋ ค์ก์ต๋๋ค.
์ด๋ก ์ธํด ๋์ ๋ ํ์ด ๋ช ์๊ฐ ๋์ ์์
ํ์ต๋๋ค.
@jameskyle , ์๊ฒฌ์ ๊ณต์ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
์ ๋ package.json์ด yarn.lock๊ณผ ๋๊ธฐํ๋์ง ์๋ ์๋๋ฆฌ์ค๋ฅผ ๊ณต์ ํ๋ค๊ณ ์๊ฐํ์ง ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ์ ํจํ ํฌ์ธํธ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ @wycats๊ฐ ์ง์ ํ๋ฏ์ด ์๋ ๋ฒ๊ทธ ๋ณด๊ณ ์๋ ์ ํจํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์์ ํ๋ ๊ฒ์ ์ ํจํ ๋น๋๋ฅผ ๊ฐ๋ ๋ฐ ์ค์ํ๋ฉฐ ๋ชจ๋ ์ดํด ๊ด๊ณ์๋ฅผ ๋ง์กฑ์ํค๋ ์๋ฃจ์
์ ์ ์ํ๊ธฐ ์ํด ๋ฌธ์ ๋ฅผ ๋ค์ ์ด๊ฒ ์ต๋๋ค.
@wycats
๋ ์ ํํ๊ฒ ๋งํ๋ฉด ์์๋๋ ์๋ฏธ๋ก ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
package.json
์ดyarn.lock
๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ณ๊ฒฝ๋ ์ดํ๋ก ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐyarn.lock
๋ ์ง์ค์ ์์ค์ด๋ฏ๋ก ์ ๋ฐ์ดํธํด์๋ ์ ๋ฉ๋๋ค.- ๊ฒฝ์ฐ
package.json
์ง๋ ์ดํ์ ๋ณ๊ฒฝ๋yarn.lock
๋ณ๊ฒฝ ์ ๋ฐ์ดํธyarn.lock
๋ง์กฑ ๋๋ฌดpackage.json
๋ฐ ๊ฐฑ์node_modules
.yarn update
๊ฐ ์คํ๋๋ฉด ๋ชจ๋ ์ข ์์ฑ์ ๋ค์ ํด๊ฒฐํ๊ณpackage.json
๋ฅผ ์ถฉ์กฑํ๋ ๋ชจ๋ ํญ๋ชฉ์ ์ต์ ๋ฒ์ ์ ๊ฐ์ ธ์ต๋๋ค.์ด๊ฒ์ ์ ์ฅ์๊ฐ ๋จธ์ ์์
yarn.lock
๊ฐ ์ฒดํฌ์ธ๋ ๊ฒฝ์ฐ, yarn์ ํญ์ ์ด๋ฅผ ์์ค๋ก ์ทจ๊ธํด์ผ ํ๋ฉฐyarn.lock
๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์์ฑํ์ง ์๊ณ ์ ํํด์ผ ํฉ๋๋ค. ๊ฐ์ ธ์ค๊ธฐ ๋จ๊ณ๋ก ์ง์ ์ด๋ํฉ๋๋ค.
์ด๊ฒ๋ค์ ๋ด๊ฐ #364์์ ์ถ๊ฐํ ์๋ฏธ๋ก ์ ๋๋ค.
@bestander ์ด๋ฌํ ํด๋ฆฌ์คํฑ์ ํ์ จ์ต๋๋ค . ์ด๋ค ์ถ๊ฐ ๋ณ๊ฒฝ์ ์ ์ํ๊ณ ์์ต๋๊น?
์ด ๋ฌธ์ ๋ ๋งค์ฐ ๊ด๋ฒ์ํ๋ฉฐ ์ฐ๋ฆฌ๋ ์ด๋ฏธ --pure-lockfile
๊ฐ ๊ธฐ๋ณธ๊ฐ์ด ์๋๋ผ๋ ๋ฐ ๋์ํ์ผ๋ฉฐ @wycats๊ฐ ์ค๋ช
ํ ๊ฒฝํ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ฅผ ๊ฒ์
๋๋ค. ์ด ๋ฌธ์ ๊ฐ ๊ณ์ ์ด๋ ค ์์ผ๋ฉด ์ ๋ชฉ์ ์ด ๋์๊ณผ ๊ด๋ จ๋ ํ์ฌ ๋ฌธ์ ๊ฐ ๋ฐ์๋์ด์ผ ํฉ๋๋ค.
@kittens ๊ฐ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์
๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
๋๋ package.json์ด ๋ณ๊ฒฝ๋์ง ์์์ ๋ ์ ๊ธ ํ์ผ์ ๋ณ๊ฒฝํ๋ ์ค์น์ ๊ด๋ จ๋ ์ ํญ๋ชฉ์ ์ด์ด์ผ ํ ์๋ ์์ต๋๋ค.
์ ๋ฌธ์ ๋ก ์ด๋ํ ์ ์์ต๋๊น? ์ฌ๊ธฐ์ ์๋ ์ด ๋๊ธ์ ์์นด์ด๋ธ๋ก ๋ณด๊ดํ ์ ์์ต๋๋ค.
@thejameskyle , ์ค๋ ์ ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ณ ์ฌ๊ธฐ์ ๋งํฌํ๊ฒ ์ต๋๋ค.
์๋ก์ด ์ด์ ์ ๋ง์ถ ๋ฌธ์ ์์ฑ https://github.com/yarnpkg/yarn/issues/1576
package.json์ ํจํค์ง๊ฐ yarn.lock์ ์์ผ๋ฉด yarn install
์คํจํ๋๋ก ํ๋ ์ต์
์ด ์์ผ๋ฉด ํฅ๋ฏธ๋ก์ธ ๊ฒ์
๋๋ค. ํจํค์ง๊ฐ ์ ๊ฒจ ์์ง ์์ผ๋ฉด ์คํจ
์์ ๋ด์ฉ์ ์ฝ์ ํ์๋ ์ฌ์ ํ ๋ชจํธํ ์ค๋ช ์ ์ถ๊ฐํฉ๋๋ค.
tldr; package.json
๊ด๋ จ ์๋ ๋ณ๊ฒฝ์ ํจํค์ง๋ฅผ ๋ณ๊ฒฝ๋์ง ์์ package.json
semver์ ํธํ๋๋ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ์ง ์์ต๋๋ค.
์์ ๋ฌธ๊ตฌ ์ค ์ผ๋ถ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก yarn.lock
๊ฐ package.json
ํด์์ ์บ์ฑ๋ ๊ฒ์ฒ๋ผ ๋ค๋ ธ ์ผ๋ฏ๋ก yarn.lock
๊ฐ (์
๋ฐ์ดํธ๋จ/์บ์ ๋ฌดํจํ๋จ) )์ ๋ณ๊ฒฝ์ package.json
๊ด๋ จ์ด์๋ ๋ณ๊ฒฝ ์ดํ์ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์ด๋ค (์ฆ,์ ๊ฐฑ์ "description"
๋๋ ๋ค๋ฅธ ์ข
์)์ด ์ข
์์๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค yarn.lock
๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธํ๊ธฐ ๋์ผํ ๊ธฐ์กด package.json
semver ๋ด์ ์ต์ ๋ฒ์ .
๊ทธ๋ฌ๋ ํจํค์ง์ yarn.lock
ํญ๋ชฉ์ ํด๋น package.json
semver๊ฐ ์
๋ฐ์ดํธ๋ ๋๋ง ๊ธฐ๋ก๋๋ ๊ฒ์ ํ์ธํ์ต๋๋ค(์ semver๊ฐ ๊ธฐ์กด yarn.lock
๋ฒ์ ๊ณผ ํธํ๋๋๋ผ๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฒ์ ์
๋ฐ์ดํธ๊ฐ ํ์ํ์ง ์์).
์๋ฅผ ๋ค์ด,
yarn add lodash@^4.17.1
์ค์น [email protected]
[email protected]
๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.[email protected]
๋ฅผ ์ค์นํฉ๋๋ค.package.json
๋ก ๋ณ๊ฒฝ ๋ ๋๊น์ง (๋๋ yarn add/upgrade/remove๊ฐ lodash์ ๋ํด ํน๋ณํ ์คํ๋จ).๋นต ๋ถ์ค๋ฌ๊ธฐ #1576
BTW์ ๊ฐ์ ์์ ๊ธฐ์ฌ๋ก ๋ฌธ์์ ๊ธฐ๊บผ์ด ๊ธฐ์ฌํ ์ ์๋ค๋ฉด ์ปค๋ฎค๋ํฐ์ ์ข์ ๊ฒ์
๋๋ค.
ํต์ฌ ํ์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ์์ ํ๊ณ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋๋ผ ๋ฐ์๊ณ ์ปค๋ฎค๋ํฐ๊ฐ ๋ฌธ์๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ด ๋๋ค๋ฉด ๊ฐ์ฌํ ๊ฒ์
๋๋ค.
@CrabDude ์ค๋ช ์ ๊ณต์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์์ ์์์ lodash
๋ฐ ์์ฒด ์ข
์์ฑ๋ง yarn.lock
์์ ์ ๊ธ ๋ฒ์ ์ด ์
๋ฐ์ดํธ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น? ์๋ฅผ ๋ค์ด ๋ค๋ฅธ ์ข
์์ฑ ์ด ์ ์ ๊ธ ๋ฒ์ ์ ๊ฐ์ง
๋๋ ๋ ๋ฒ์งธ ์: yarn.lock
๊ฐ ์ฌํ๊ฒ ๊ตฌ์์ด๊ณ ์ฌ์ฉ์๊ฐ yarn add
๋ฅผ ์คํํ์ฌ package.json์ ์ ์ข
์์ฑ์ ์ถ๊ฐํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์ค๋๋ ํจํค์ง๋ ์ด์ yarn.lock
์์ ์
๋ฐ์ดํธ๋ฉ๋๊น, ์๋๋ฉด ๊ทธ๋๋ก ์ ์ง๋ฉ๋๊น?
@๋ผํจ์ค
์์ ์์์ lodash์ ์์ฒด ์ข ์์ฑ๋ง yarn.lock์์ ์ ๊ธ ๋ฒ์ ์ด ์ ๋ฐ์ดํธ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น?
์. ์ด๊ฒ์ ๋ด ์์์ ์ง์ง๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค๋ฅธ ๋ชจ๋ ์ค๋๋ ํจํค์ง๊ฐ ์ด์ yarn.lock์์ ์ ๋ฐ์ดํธ๋ฉ๋๊น, ์๋๋ฉด ๊ทธ๋๋ก ์ ์ง๋ฉ๋๊น?
lodash
๊ฐ ์๋ ์ข
์์ฑ ํธ๋ฆฌ/ํจํค์ง์ ์ ๊ธ ํญ๋ชฉ์ด ์
๋ฐ์ดํธ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. lodash
์ ํ์ ์ข
์์ฑ๋ง ์์ ๊ฒ์
๋๋ค.
์ ๊ด์ ์์ ์ด๋ค ๊ฐ๊ฐ์ ๋ฐ๋์งํ๊ณ ๊ธฐ๋๋๋ ๊ฒ์ ๋๋ค.
๋จธ๋ฆฌ๋ง : ๋๋ ์ค์ ์ข์ํ๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋๋ฅผ ๋์์ด ์ข์ ์ํต๋๋ค.
์ฐ๋ฆฌ ํ์ฌ์์ yarn install
๋ package.json
๋ณ๊ฒฝํ์ง ์์์๋ ๋ถ๊ตฌํ๊ณ ์๋ก ๋ค๋ฅธ ์์คํ
(๊ฐ๊ฐ ๋์ผํ ๋ฒ์ ์ ์คํํจ) ๊ฐ์ ์ ๊ธ ํ์ผ์ ์ง์์ ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์
๋ฐ์ดํธํ ๋ yarn add
์ฌ์ฉํ์ฌ ์
๋ฐ์ดํธํฉ๋๋ค. ์ด๊ฒ์ CI๊ฐ ๋น๋ ํ git ์ํ๊ฐ ๊นจ๋ํ์ง ํ์ธํ์ฌ ์ ๊ธ ํ์ผ ์ฒดํฌ์ธ๊ณผ ๊ฐ์ ์์
์ ์์ง ์์๋์ง ํ์ธํ๊ณ ์์ฃผ ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ ์ฑ๊ฐ์ ์ผ์
๋๋ค.
์์ฌ์ ๋ํ ๋์ ๊ธฐ๋๋ _๊ธฐ๋ณธ์ ์ผ๋ก_ ๋ชจ๋ ์์คํ ์์ ๋์ผํ node_modules๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ด์์ต๋๋ค. ์ถ๊ฐ ํ๋๊ทธ๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ ํธ๋ฆฌํจ๋ณด๋ค ์ ํ์ฑ์ ์ฐ์ ์ํ ๊ฒ์ ๋๋ค. ๋ถํ์ค์ฑ์ ์ํ๋ฉด npm์ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ผ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ฌด์ธ๊ฐ ๋ณ๊ฒฝ๋์๋ค๋ ์ ํธ์ด๋ฏ๋ก ์์ธํ ์กฐ์ฌํด์ผ ํฉ๋๋ค. ๋ณ๊ฒฝ๋์ด์๋ ์๋ฉ๋๋ค.
์ง๋ฌธ
package.json
๋ณ๊ฒฝ๋๋ฉด ์ ๊ธ ํ์ผ์ด ์ฌ์์ฑ๋ฉ๋๋ค. ํน์ ํ๋ก๊ทธ๋๋จธ์ node_modules ์ํ์ ๋ฐ๋ผ ์๋์น ์๊ฒ ๋ง์ ์ข
์์ฑ์ ๋ณ๊ฒฝํ ์ ์์์ต๋๊น? Yarn์ ๋ธํ๋ฅผ ๊ฒฐ์ ํ๊ณ ๊ธฐ์กด ์ ๊ธ์ โโ๊ฐ๋ฅํ ํ ์ต๋ํ ๋ณด์กดํด์ผ ํฉ๋๋ค(์์ง ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ).yarn add
์ ๋ฒ์ ์ง์ package.json
A๋ฅผ ^
? ๋ค์ ๋งํ์ง๋ง, ์ ๋ yarn์ ์ฝ์์ด ์์กด์ฑ์ ๋๊ฒฐํ๋ค๋ ๊ฒ์ ์ดํดํ์ต๋๋ค.๊ด๋ จ ๋ฒ๊ทธ
node_modules
์์ ์์์ ํจํค์ง๋ฅผ ์ญ์ ํ๋ฉด yarn install
๋ค์ ์ค์นํ์ง ์๊ณ ์ฑ๊ณต์ ๋ํ๋
๋๋ค. ๊ทธ๊ฒ๋ค์ด ๋ง์ด ์ฌ๋ผ์ง๋ฉด ๋ค์ ์ค์นํฉ๋๋ค. npm
๋ ์ด์ ๊ด๋ จํ์ฌ ์ข ๋ ์ฒ ์ ํฉ๋๋ค.node_modules
๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ์ ๊ธ ํ์ผ์ ์ญ์ ํ๋ฉด yarn์ด ์ด๋ฅผ ๋ค์ ์์ฑํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ด์ ๋ฒ์ ๊ณผ ๋งค์ฐ ๋ค๋ฆ
๋๋ค. ์ด๊ฒ์ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์๊ณ ์คํํ ๋๋ง๋ค ๋ค๋ฅธ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ปดํ์ผ๋ฌ์ ๊ฐ์ต๋๋ค.์ ๋ฐ์ ์ผ๋ก, yarn์ ์ค์น๋ฅผ ๋ ๋น ๋ฅด๊ฒ ํ์ง๋ง ํต์ฌ (in)๋ฅ๋ ฅ์์ ์คํจํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒ์ ์ ์ผ๊ด๋๊ฒ ๊ณ ์ ํฉ๋๋ค. ๋๋ ๋ด ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๋ฐ ๋์์ด ๋๋ ํธ์๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๋๋ ์๋ ์ ๊ฑธ์ณ ๊ฑฐ๋ํ ํ์ ํตํด ๊ทธ๊ฒ์ ์ ์งํ๋ ๋ฐ ๋์์ด ํ์ํฉ๋๋ค. ํ๋ก๊ทธ๋๋จธ๋ ๋๋ํ๊ณ ์๋์ ์ด์ด์ ๋ณ๊ฒฝ์ ์ํ ๋ ๋ช ์์ ์ผ๋ก ์์ฒญํ ๊ฒ์ ๋๋ค.
๋์์์ด ๋ณํํ๋ ์ ๊ธ ํ์ผ์ ์์ ๊ฐ์ ์ฌ์ด์ฃผ์ง ๋ชปํ๊ณ ๋์์๋ ๋ฒ๊ฑฐ๋ก์์ ์ค๋๋ค. ๋๋ package.json์ด lockfile๊ณผ ์ผ์นํ์ง ์๋๋ค๋ ๊ฒ, lockfile์ด node_modules์ ์ผ์นํ์ง ์๋๋ค๋ ๊ฒ, ์ ๊ธด ๋ฒ์ ์ด ๋ ์ด์ ์กด์ฌํ์ง ์๋๋ค๋ ๋ฑ์ ๊ฒฝ๊ณ ์ ์ค๋ฅ๋ฅผ ์ ํธํฉ๋๋ค. ๋ด ์์กด์ฑ์ ๋ํด ์๋์ ์ธ ๊ฒฐ์ ์ ๋ด๋ฆฝ๋๋ค.
@jspiro ,
์ฌ๊ธฐ์ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์ ๊ธฐ๋ฉ๋๋ค.
๊ฐ ๋ฌธ์ ๋ฅผ ๋ณ๋๋ก ์ฌ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฃผ์์์ ์์ค๋ฉ๋๋ค.
์ต์ ๋ฒ์ ์ Yarn์ ์ฌ์ฉ ์ค์ด์ ๊ฐ์?
0.18-0.19์์ ์ฐ๋ฆฌ๋ ๋จธ์ ์ฌ์ด์์ yarn.lock ํ์ผ์ ๋ํ ์์ ์ ๋ณผ ์ ์์ต๋๋ค.
์ง๋ฌธ:
lockfile์ด ๋ณ๊ฒฝ๋๋๋ผ๋ node_modules์ ๋ด์ฉ์ ์์ฑ๋ ๋์ ํญ์ ๋์ผํ๋ค๋ ๋ง์ ๋๊น? ๋๋ ์ด๊ฒ์ด ์ฌ์ค์ด๋ผ๊ณ ๋ฏฟ์ง ์์ง๋ง ๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด ์ด ์ค๋ ๋์ ํผ๋์ ์ดํดํฉ๋๋ค. ๊ทธ๊ฒ์ ์ค์ด ๊ทธ๋ ์ง ์์ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ด ์ณ์ ์ผ์ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ ๊ฒ์ ๋๋ค.
๋์ผํ ์ ๊ธ ํ์ผ์ ๋ํด Dev ๋ฐ ์ ํ์ ์ข
์์ฑ์ ์๋ตํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ๋ซํผ๋ณ ํจํค์ง๋ฅผ ์ ์ธํ๊ณ bing ์ค์น๋๋ ๊ฒ์ node_modules์ ๋์ผํ ์์น์ ๋์ผํ ํจํค์ง๊ฐ ์์ด์ผ ํฉ๋๋ค.
package.json์ด ๋ณ๊ฒฝ๋๋ฉด ์ ๊ธ ํ์ผ์ด ๋ค์ ์์ฑ๋ฉ๋๋ค. ํน์ ํ๋ก๊ทธ๋๋จธ์ node_modules ์ํ์ ๋ฐ๋ผ ์๋์น ์๊ฒ ๋ง์ ์ข ์์ฑ์ ๋ณ๊ฒฝํ ์ ์์์ต๋๊น? Yarn์ ๋ธํ๋ฅผ ๊ฒฐ์ ํ๊ณ ๊ธฐ์กด ์ ๊ธ์ โโ๊ฐ๋ฅํ ํ ์ต๋ํ ๋ณด์กดํด์ผ ํฉ๋๋ค(์์ง ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ).
์ข์ ๊ธฐ๋ฅ ์์ฒญ์ ๋๋ค. ์ด์ ๋ํ PR์ ๋ณด๊ณ ์ถ์ต๋๋ค.
์์ฌ ์ถ๊ฐ๊ฐ ^๋ก package.json์ ๋ฒ์ ์ ์ง์ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ค์ ๋งํ์ง๋ง, ์ ๋ yarn์ ์ฝ์์ด ์์กด์ฑ์ ๋๊ฒฐํ๋ค๋ ๊ฒ์ ์ดํดํ์ต๋๋ค.
์ด๋ npm์ ํ๋์ ๋ฐ์ํฉ๋๋ค.
์ ํํ ๋ฒ์ ์ ๋ํด yarn add [email protected]
๋๋ yarn add is-array --exact
๋ฅผ ์ํํ ์ ์์ต๋๋ค.
์ธ์ ๊ฐ๋ ์ ํํ ๋ฒ์ ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํด์ผ ํ ์๋ ์์ต๋๋ค. ์ด๊ฒ์ RFC์์ ๋
ผ์๋ ์ ์์ต๋๋ค.
node_modules์์ ์์์ ํจํค์ง๊ฐ ์ญ์ ๋๋ฉด ๋ค์ ์ค์นํ์ง ์๊ณ yarn install์ ์ฑ๊ณต์ด๋ผ๊ณ ํ์๋ฉ๋๋ค. ๊ทธ๊ฒ๋ค์ด ๋ง์ด ์ฌ๋ผ์ง๋ฉด ๋ค์ ์ค์นํฉ๋๋ค. npm์ ์ด์ ๊ด๋ จํ์ฌ ์ข ๋ ์ฒ ์ ํฉ๋๋ค.
Yarn์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น ๋ฅธ ์์ ๊ฒ์ฌ๋ฅผ ์คํํฉ๋๋ค.
์ฌ์ธต ๊ฒ์ฌ๋ฅผ ์ํํ๋ฉด ์๋๊ฐ ๋๋ ค์ง์ง๋ง ์์
์ค์ด๋ฏ๋ก ๋น ๋ฅด๊ฒ ์ฌ์ธต ๊ฒ์ฌ๋ฅผ ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
ํ์ง๋ง node_modules์ ํ์ผ์ ๋ง์ง๋ฉด ์ ๋ฉ๋๋ค. ์์ ์ ์ํด ๊ฐ ํ์ผ์ ํ์ธํ๋ฉด ์ค์น ํ๊ฒฝ์ด ๋งค์ฐ ๋๋ ค์ง๋๋ค.
์์ ๊ฒ์ฌ๋ฅผ ๊ฑด๋๋ฐ๋ ค๋ฉด ์ค์นํ๊ธฐ ์ ์ node_modules/.yarn-integrity
ํ์ผ์ ์ ๊ฑฐํ์ญ์์ค. ์ด๊ฒ์ ๊ณต์์ ์ด์ง ์์ผ๋ฉฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
๊ณต์์ ์ธ ๋ฐฉ๋ฒ์ yarn install --force
๋ฅผ ์คํํ๋ ๊ฒ์
๋๋ค. ์ ์ฒด ์ค์น๋ฅผ ๊ฐ์ ์คํํ์ง๋ง ๋ถ์์ฉ์ผ๋ก yarn.lock์ ๋ค์ ์์ฑํฉ๋๋ค.
node_modules๋ฅผ ์ญ์ ํ๊ณ ์๋ก ์ค์นํ๋ฉด ์ ๊ธ ํ์ผ์ด ๋ค์ ์์ฑ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค(๋ง ๊ทธ๋๋ก ์์ํ๋ ๊ฒ๊ณผ ๋ฐ๋์ ๋๋ค. ์ ๊ธ ํ์ผ์ ์๋ ๊ฒ์ ์ ํํ ์ค์นํ๊ณ ๋ค๋ฅธ ์์ ์ ์ํํ์ง ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค)
ํ๋์ ์ด๊ฒ์ ๋ณด์ง ๋ชปํ์ต๋๋ค.
๋ฌธ์ ๋ฅผ ์ด๊ณ ์ด๊ฒ์ด ์ฌํ๋ ์ ์์ผ๋ฉด ์ฐธ์กฐํ์ญ์์ค.
์๋ก ์ค์นํ ํ package ๋๋ node_modules๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ lockfile์ ์ญ์ ํ๋ฉด yarn์ด ์ด๋ฅผ ์ฌ์์ฑํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ด์ ๋ฒ์ ๊ณผ ๋งค์ฐ ๋ค๋ฆ ๋๋ค. ์ด๊ฒ์ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์๊ณ ์คํํ ๋๋ง๋ค ๋ค๋ฅธ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ปดํ์ผ๋ฌ์ ๊ฐ์ต๋๋ค.
์ผ๋ง ํ ์๋ก์ด ๋ฒ์ ์ ์ ์ด์ ์ข
์์ฑ์ด ๋ฆด๋ฆฌ์ค๋์์ ์ ์์ต๋๋ค.
๊ทธ ๋๋ฌธ์ ํธ์ด์คํ
๋ก์ง ๋๋ฌธ์ node_modules์ ๊ตฌ์กฐ๊ฐ ํฌ๊ฒ ๋ฐ๋ ์ ์์ต๋๋ค.
์ค๊ณ๋ ๋๋ก ์๋ํฉ๋๋ค.
https://github.com/yarnpkg/yarn/pull/2580์ import
๋ช
๋ น์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ๊ธฐ์กด node_modules์์ ์ ๊ธ ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค.
@jspiro , Yarn์ ์ ์ ์ปค๋ฎค๋ํฐ ์ฃผ๋ ํ๋ก์ ํธ์ ๋๋ค. ๋ ๋์ ์์ ์ ์ํ PR์ ํ์ํฉ๋๋ค.
์ต์ํ ์ํ๋ ๊ธฐ๋ณธ ๋์์ ์ค์ ํ๋ ์ต์ ์ ์ป์ ๊ธฐํ๊ฐ ์์ต๋๊น?
ํ์ฌ https://github.com/yarnpkg/yarn/issues/3490 ์ด ๋ฌธ์ ๋ฅผ ์์ ํ๊ณ yarn install
์ธํด ์์ํ์ง ๋ชปํ ๋์์ผ๋ก ์ ๊ธ ํ์ผ์ด ์ต์ ํ๋ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ์์ ํ๊ฒ ์ต๋๋ค.
์ด๊ฒ์ด ์ด ๋ณ๊ฒฝ์ ์์ฒญํ๋ ์ด์ ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋์ผ๋ก package.json์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ์๋ง yarn.lock ํ์ผ์ด ๋ณ๊ฒฝ๋์ด์ผ ํฉ๋๋ค.
.yarnrc์์ --pure-lockfile/--frozen-lockfile์ true๋ก ์ค์ ํ ์ ์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น ๋ช ๋ น์ ์ถ๊ฐ๋ฉ๋๋ค.
--install.pure-lockfile true
๋ด ๋ฌธ์ ๋ ์์ ์ ๊ธ ํ์ผ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์๋ชป๋ ๋ฒ์ ์ ์ข ์์ฑ์ด ์ค์น๋๋ค๋ ๊ฒ์ ๋๋ค. ์์น ์๋ yarn.lock ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
์ฌํ ๋จ๊ณ์ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ์ ์ถํ ์ ์์ต๋๊น?
์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ์ ๋ฆฌํ ๊ฒ์
๋๋ค
๋๋ ์ ๋์ ๊ฐ์ด์ด ๋ฌผ๋ฆฐํ๋ค package.json
๋ฐ yarn.lock
์ผ๋ก ์ธํด ๊ฐ๋ฐ์๊ฐ ์ค์๋ฅผ ํตํด ์ข
์์ฑ์ ์ถ๊ฐํ๋ ๋๊ธฐ์์ ๋์์ npm install --save
๋์ yarn add
.
pure-lockfile
๊ฐ ๊ธฐ๋ณธ๊ฐ์ด์ด์ผ ํ๊ณ ์คํ๋ ค frozen-lockfile
๊ฐ yarn install
์ ๊ธฐ๋ณธ๊ฐ์ด์ด์ผ ํ๋ค๋ ์ ์ ๋์ํ์ง ์์ต๋๋ค.
frozen-lockfile
๋ yarn.lock
์ package.json
๊ฐ ๋๊ธฐํ๋์ง ์์ ๊ฒฝ์ฐ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์์ฑํฉ๋๋ค. ๋ฐ๋ผ์ frozen-lockfile
๋ ๋น๋ ๋จธ์ (์: ์ ํจ์ค)์์ ์์๋๋ก ๋น๋๋ฅผ ์คํจ๋ก ํ์ํ๋ฏ๋ก ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ package.json / yarn.lock์ ์ถ๊ฐํ ๋ฒ์ ์ ๊ฒฐ์ ํ๋ ๊ฒ์ ๊ฐ๋ฐ์์ ๋ชซ์ ๋๋ค.
yarn install
์ ๋ถํํ ๊ธฐ๋ณธ๊ฐ์ ์์ง ์ข
์์ฑ์ ์ ๊ฒจ ์์ง ์์ ์ต์ ๋ฒ์ ์ ๊ฐ์ ธ์ค๊ณ ํ๋ก์ ํธ์ ์ผ๋ถ๊ฐ ๋์ง ์์ ์
๋ฐ์ดํธ๋ ๋ฒ์ yarn.lock
์ ์์ฑํฉ๋๋ค. ๋ฐ๋ผ์ ์๊ธฐ์น ์์ ๋ฒ์ ์ถฉ๋๋ก ์ธํด ๋น๋๊ฐ ์ค๋จ๋ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋ฐ๋ก ์ ๊ธ ํ์ผ์ด ์๋ ์ด์ ์
๋๋ค.
์์ง๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
๋ง ๊ฐ์ ๋ช
๋ น add
, remove
๋ฐ upgrade
๋ณ์ดํ๋ค yarn.lock
.
install
๋ ๊ทธ๋ ๊ฒ ํด์ผ ํฉ๋๋ค. ์ฆ, ์ ๊ธด ๋ฒ์ ์ ์ข
์์ฑ์ ์ค์นํ๊ฑฐ๋ package.json
์ yarn.lock
์ฌ์ด์ ๋ถ์ผ์น๋ฅผ ๊ฐ์งํ๋ฉด ์คํจํฉ๋๋ค. (์ ์ด์ yarn.lock
์ด ์๋ ๊ฒฝ์ฐ๋ ์์ธ์
๋๋ค. ๊ทธ๋ฐ ๋ค์์๋ง ์์ฑํ ์ ์์ง๋ง ๋ค์๋ ๊ฑด๋๋ฆฌ์ง ์์์ผ ํฉ๋๋ค.)
๋ฐ๋ผ์ frozen-lockfile์ ๋น๋ ๋จธ์ (์: ์ ํจ์ค)์์ ๋น๋๊ฐ ์คํจํ๋ฏ๋ก ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
CI ๋ชจ๋์ ์์์ ๊ฐ์งํ๋ฉด ์๋์ผ๋ก ํ์ฑํํ ์ ์์ต๋๊น?
@BYK ์ฌ๊ธฐ์ ์ถ๊ฐํ๊ธฐ ์ ์ ์ด ๋ฌธ์ ๊ฐ ์ข ๋ฃ
์๋ก ์คํํ๋ค๊ณ ํฉ๋๋คโบ๏ธ
์ ๋ yarn.lock์ด package.json๊ณผ ์๋์ผ๋ก ๋๊ธฐํ๋์ด์ผ ํ๋ค๋ @thejameskyle ๋ฐ @kittens์ ๋์ํฉ๋๋ค.
์ด๊ฒ์ด ๋งํ๋์ง ํ์คํ์ง ์์ง๋ง ๋ค์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ: package.json์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋ ๋ ์ ์ฒด yarn.lock์ ๋ฌดํจํํ ํ์๊ฐ ์์ต๋๋ค. package.json ๋ด์์ ์์ ๋ ํจํค์ง์ ์ข ์์ฑ๋ง ๋ฌดํจํํ ์ ์์ต๋๋ค. TypeScript๋ง ์ ๋ฐ์ดํธํ ๊ฒฝ์ฐ Fe๋ TypeScript์ ์ข ์์ฑ์ ์์ ํด์ผ ํฉ๋๋ค(๋ค๋ฅธ ๋ณ๊ฒฝ๋์ง ์์ ํจํค์ง์ ๋ํ ๊ณ ๋ ค ํฌํจ).
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฌ๊ธฐ์์ ๋ด๊ฐ ํ๊ณ ์ ํ๋ ๋ค์ํ ์ผ๋ค์ด ์ผ์ด๋๊ณ ์์ต๋๋ค(๋ง์ฅ๋ ์๋ ์์).
์ฒซ์งธ, ์ฌ๋๋ค์ ๋ ผ์์ ์ฌ์ง๊ฐ ์๋ค๊ณ ์๊ฐํ๋ ์ฌ๋ฌ ๊ฐ์ง ์๊ตฌ ์ฌํญ์ ์ ๊ธฐํ์ต๋๋ค(๊ทธ๋ฆฌ๊ณ ์ด๋ก ์ธํด ๊ธฐ์กด ๋์์ ์ผ๋ถ๊ฐ ๋ฒ๊ทธ๊ฐ ๋๋ฉฐ, ์ด์ ๋ํด์๋ ๊ณง ๋ค๋ฃจ๊ฒ ๋ ๊ฒ์ ๋๋ค).
์๋ ๋ฒ๊ทธ ๋ณด๊ณ ์์์.
๋ ์ ํํ๊ฒ ๋งํ๋ฉด ์์๋๋ ์๋ฏธ๋ก ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
package.json
์ดyarn.lock
๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ณ๊ฒฝ๋ ์ดํ๋ก ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐyarn.lock
๋ ์ง์ค์ ์์ค์ด๋ฏ๋ก ์ ๋ฐ์ดํธํด์๋ ์ ๋ฉ๋๋ค.package.json
์ง๋ ์ดํ์ ๋ณ๊ฒฝ๋yarn.lock
๋ณ๊ฒฝ ์ ๋ฐ์ดํธyarn.lock
๋ง์กฑ ๋๋ฌดpackage.json
๋ฐ ๊ฐฑ์node_modules
.yarn update
๊ฐ ์คํ๋๋ฉด ๋ชจ๋ ์ข ์์ฑ์ ๋ค์ ํด๊ฒฐํ๊ณpackage.json
๋ฅผ ์ถฉ์กฑํ๋ ๋ชจ๋ ํญ๋ชฉ์ ์ต์ ๋ฒ์ ์ ๊ฐ์ ธ์ต๋๋ค.์ด๊ฒ์ ์ ์ฅ์๊ฐ ๋จธ์ ์์
yarn.lock
๊ฐ ์ฒดํฌ์ธ๋ ๊ฒฝ์ฐ, yarn์ ํญ์ ์ด๋ฅผ ์์ค๋ก ์ทจ๊ธํด์ผ ํ๋ฉฐyarn.lock
๋ํ ์ ๋ฐ์ดํธ๋ฅผ ์์ฑํ์ง ์๊ณ ์ ํํด์ผ ํฉ๋๋ค. ๊ฐ์ ธ์ค๊ธฐ ๋จ๊ณ๋ก ์ง์ ์ด๋ํฉ๋๋ค.์ด๊ฒ์ด ํ์ฌ yarn์ ๋์์ด ์๋ ํ ๋ฒ๊ทธ๊ฐ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@esphen ์ ๋ค์
์ด๊ฒ์ด ๋งํ๋ ค๋ ๊ฒ์ ๊ธฐ์กด์ ์ ๊ธ ํ์ผ์ด ์ฌ์ ํ ์ต์ ์ํ๋ผ๋ฉด ์์ฌ๊ฐ ์ ์ ๊ธ ํ์ผ์ ์์ฑํด์๋ ์ ๋๋ค๋ ๊ฒ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋์ํฉ๋๋ค.
์ฌ๊ธฐ์ ์ค์ํ ๋ฌธ์ ๋
package.json
๋ํ ๋ณ๊ฒฝ์ผ๋ก ์ธํดyarn.lock
๊ฐ ์ ๋ฐ์ดํธ๋์ด์ผ ํ๋์ง ์ฌ๋ถ์ ๋๋ค. ์ ์๊ฐ์๋package.json
๋ํ ๋ณ๊ฒฝ ์ฌํญ์ดyarn.lock
์ํด ๋ง์กฑ๋์ง ์์ผ๋ฉดyarn.lock
์ ๋ฐ์ดํธ ํด์ผ ํฉ๋๋ค .์์ฌ์ ๊ฐ์ ์ ๊ธ ํ์ผ ์์คํ ์ ์ค์ํ ๋ถ๋ณ์ฑ์ ์ผ๋ฐ์ ์ธ ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ฑ์ ์คํํ ๋ ์ค์ ๋ก ์ฌ์ฉ๋๋ ํจํค์ง๊ฐ
package.json
์ง์ ๋ ๋ฒ์ ๊ณผ ์ผ์นํ๋์ง ํ์ธํpackage.json
๊ฐyarn.lock
์ ๋๊ธฐํ๋์ง ์๋ ๊ฒ์ด ํ์ฉ๋๋ฉด ์ด๊ฒ์ ์ฌ์ค์ด ์๋๋ฉฐ ์ฌ๋ ๋ ์๊ฐyarn.lock
๋ฅผ ์ฃผ์ ๊น๊ฒ ์ฝ์ด์ผ ํ๋ค๋ ๊ฒ์ ์ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๋ค.๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ์ ๊ธ ํ์ผ์ ๋ํด ์๊ฐํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ํ์ฌ
package.json
์ฌ์ฉ๋ ๋ชจ๋ ํจํค์ง์ ์ ํํ ๋ฒ์ ์ ๋ํ๋ด๋ ์คํ ์ค์ ์ํฐํฉํธ๋ผ๋ ๊ฒ์ ๋๋ค. ์ฒดํฌ์ธํ๋ฉด ๋ค๋ฅธ ๊ณต๋ ์์ ์, CI ๋ฐ ํ๋ก๋์ ์ฝ๋์์ ๋์ผํ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.@Guuz ๋ ๋ค์๊ณผ
์ด ์ง๋ฌธ์ ์ด ์ค๋ ๋์์ ๋ช๋ช ์ฌ๋๋ค์ด ํ ๊ฐ์ ์ ๋ฐ์ํฉ๋๋ค.
Cargo์๋ "
package.json
๊ฐyarn.lock
์ํด ๋ง์กฑ๋์ง ์์ผ๋ฉด ํ๋ ์ค๋ฅ์ ๋๋ค"๋ผ๋--locked
ํ๋๊ทธ๊ฐ ์์ต๋๋ค. Bundler์๋ ์ ์ฌํ ํ๋๊ทธ(--frozen
)๊ฐ ์์ต๋๋ค. ์ด๋ Heroku๊ฐ Bundler๋ฅผ ์ฑํํ ๋ ์ถ๊ฐ๋์ดGemfile
๋ฅผ ๋ก์ปฌ๋ก ๋ณ๊ฒฝํ๊ณGemfile.lock
๋ฅผ ํ์ธํ๋ ๊ฒ์ ์์์ ๋ ์ฌ๋๋ค์๊ฒ ์ฌ๊ฐํ ์ค๋ฅ๋ฅผ ์ ๊ณตํฉ๋๋ค.์์ด๋์ด๋ ์ ์์ ์ธ ๊ฐ๋ฐ ์ค์
package.json
๋ณ๊ฒฝํ ์ ์๊ณ ์์ฌ์์yarn.lock
๊ฐ ๋๊ธฐํ ์ํ๋ฅผ ์ ์งํ๋๋ก ํ๋ ค๋ ๊ฒ์ ๋๋ค(๋ค์, ์ง์ ๋ ๋ฒ์ ์ดpackage.json
ํญ์ ์ค์ ๋ก ์ฌ์ฉ๋๋ ๊ฒ๊ณผ ์ผ์นํฉ๋๋ค.๊ทธ๋ฌ๋ ๋ฐฐํฌํ ๋
package.json
๋ณ๊ฒฝํ๊ณ ๋ก์ปฌyarn
๋ช ๋ น์ ์คํํ์ผ๋ฉฐyarn.lock
์ฒดํฌ์ธ์ ์์ด๋ฒ๋ ธ๊ธฐ ๋๋ฌธ์ ๋ถ๊ธฐ๋ ๊ฒ์ ๊ฑฐ์ ํญ์ ์ค๋ฅ์ ๋๋คyarn
. ์ด๊ฒ์package.json
๋ฒ์ ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ๋ ์ฌ์ฉ๋ ์ค์ ๋ฒ์ ๊ณผ ์ผ์นํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ ๋งํ๋ ์์ฌ์ ๊ธฐ๋ณธ ๋ถ๋ณ์ฑ์ ์๋ฐํ๋ค๊ณ ๋งํ์ต๋๋ค.@esphen ์ ๋ค์๊ณผ
๋๋ ์ด๊ฒ์ด ๋ ผ์์ ์ฌ์ง๊ฐ ์๋ค๊ณ ์๊ฐํ๋ค.
yarn install --pure-lockfile
์คํํ๋ฉด ์ ๊ธ ํ์ผ ๋ด๋ถ์ ๋ฒ์ ์ดpackage.json
์ง์ ๋ ๋ฒ์ ๊ณผ ์ถฉ๋ํ๋๋ผ๋ ์ ๊ธ ํ์ผ์ด ์กด์ค๋ฉ๋๋ค. ๊ฐ๋ฐ์ ์์ด๋ค์ด ์ฒดํฌ์ธ ๊ฒฝ์ฐ์๋ง ์ฒซ ๋ฒ์งธ ์ฅ์์์ ๋ฐ์ํ๋คyarn.lock
๋ฐ๋ ์ฌ๋ ๋ณ๊ฒฝ ํ ํpackage.json
.package.json
๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋ค๋ฉด ์ ์๊ฐ์๋yarn.lock
๊ฐ ์ ๋ฐ์ดํธ๋๋ฉด ๋ฒ๊ทธ์ ๋๋ค. ๋ฒ๊ทธ์ ์ ์ด๋ ํ๋์ ๊ฒฝ์ฐ๊ฐ ์๋ ๋ณด๊ณ ์์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.์ด๊ฒ์ ์ค๋ฅ์ด๋ฉฐ ์์ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋์ค์ ์ค๋ ๋์์ @thejameskyle ์ ๋ค์๊ณผ
๊ทธ๊ฑด ๋ด๋ณด๊ธฐ์, ์ ํํ ์ฌ๋ฐ๋ฅธ ์ ์ ๋ชจ๋ธ์ด๋ค ( "
yarn.lock
์ ๊ฒฝ์ฐ์๋ง ๊ฒฝ์ฐ ๋ณ๊ฒฝํ ์ ์์ต๋๋คpackage.json
๋ณ๊ฒฝ"), ๊ทธ๋ฆฌ๊ณ ์ถ์ํ ๋์ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ์์ ํด์ผํฉ๋๋ค.@adamchainz ๋ ๋ค์๊ณผ
๊ทธ๋ฆฌ๊ณ ๋์ค์:
์ฌ๊ธฐ์ ๋ฌธ์ ๋ yarn์ด git sha๋ฅผ ์ ๊ธด ๋ฒ์ ์ git ์ข ์์ฑ์ ์ผ๋ถ๋ก ์ทจ๊ธํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. Cargo์ Bundler๋ ๋ชจ๋ ์ ๊ธ ํ์ผ๋ก ์ง๋ ฌํ๋๋ "์ ํํ" ๋ฒ์ ์ ๊ฐ๋ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. git ์์ค์ ๊ฒฝ์ฐ "์ ํํ" ๋ฒ์ ์ SHA์ ๋๋ค. ๋น์ ์ด ์๋ก์ด ํด๋ก ์ ํ ๋ ๊ทธ๋ฐ ๋ค์, ๋จ์ง
package.json
๋ฐyarn.lock
์คํyarn
, ๋น์ ์ด ํ์๋ก ์ ํํ๊ฒ ์ฝ๋๋ฅผ ์ป์ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ์์ต๋๋ค.์๋ณธ git ์ฝ๋๋ฅผ ๊ฒํ ํ ๋ ์ด ์ํธ ์์ฉ์ ๋์ณค๋ค๋ ๊ฒ์ ๊ณ ๋ฐฑํด์ผ ํฉ๋๋ค. ์ฝ๋์ ์ผ๋ถ SHA ์ถ์ ์ด ์์ง๋ง
yarn install
๋ ์ํ ์ข ์์ฑ ๊ทธ๋ํ๊ฐ ์ด๋ฅผ ์ค์ํ๋์ง ํ์ธํ์ง ์์ต๋๋ค.TL;DR
๋๋
yarn.lock
๊ฐpackage.json
์๋์ผ๋ก ๋๊ธฐํ๋์ด์ผ ํ๋ค๋ @thejameskyle ๋ฐ @kittens์ ์๊ฒฌ์ ๋์ํฉ๋๋ค. ์๋ํ๋ฉด ์ ๋ ์ฌ์ฉ์๊ฐpackage.json
์ง์ ๋ ๋ฒ์ ์ ๊ฐ์ ํ ์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฑ์ด ์คํ๋ ๋ ๋ฌด์์ ์ฌ์ฉํ๋์ง ์ ๋ ฌํ์ญ์์ค.๊ทธ๋ฌ๋
package.json
๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ์๋yarn.lock
์์ ๋ถ์ ์ ํ ์ดํ์ ์ผ์ผํค๋ ๋ช ๊ฐ์ง ๋ฒ๊ทธ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.package.json
๊ฐ ์ ๋ฐ์ดํธ๋์ง ์์ ๊ฒฝ์ฐ์๋ git ์ข ์์ฑ์ด ์ ๋ฐ์ดํธ๋์ด ์ ๊ธ ํ์ผ์ด ์ ๋ฐ์ดํธ๋ฉ๋๋ค.๋ํ Cargo์
--locked
ํ๋๊ทธ์ ๊ฐ์ ๊ฒ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์ด ํ๋๊ทธ๋ ๊ฐ๋ฐ์๊ฐpackage.json
์ ๋ฐ์ดํธํ๊ณ ์ ๋ฐ์ดํธ๋yarn.lock
์ ํ์ธํ๋ ๊ฒ์ ์์ด๋ฒ๋ฆฐ ๊ฒฝ์ฐ CI์์ ๋น๋๋ฅผ ๋น ๋ฅด๊ฒ ์คํจํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค