[๋ค์ด๊ฐ๊ธฐ ์ , ํต์ฌ ํค์๋]
1) zero-install ๋ฐฉ์๊ณผ ๊ทธ๋ฆฌ๊ณ pnp
2) non-zero-install ๋ฐฉ์๊ณผ ๊ทธ๋ฆฌ๊ณ node_modules
[๋์ ๋ฐฐ๊ฒฝ]
ํ
์คํธ๋ฑ
ํฌ์์๋ ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ๊ฐ API ๊ด๋ จ ์ปค๋ฎค๋์ผ์ด์
์ ํจ์จํ ํ๊ธฐ ์ํ ๋ฐฉ์์ผ๋ก, buf.build ์ฌ์ดํธ์์ ์ ๊ณตํ๋ buf ํจํค์ง๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ์. ๊ทธ๋ฐ๋ฐ ๊ณต์ ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด buf๋ yarn classic์ ๋ํ ์ง์์ ํ์ง ์๋ ๋ชจ์์
๋๋ค.
๊ทธ๋ ๋ค๊ณ ์ด buf๋ฅผ ๋ฒ๋ฆฌ๊ธฐ์๋ ์ปค๋ฎค๋์ผ์ด์
ํจ์จํ์์ ์ค๋ ์ฅ์ ์ด ๋ง๊ธฐ ๋๋ฌธ์, ์ด๋ฒ ๊ธฐํ์ yarn ๋ฒ์ ์ ์
๋ฐ์ดํธ ํด์ ํ๋ฒ ์ฌ์ฉํด๋ณด๋๋ก ํฉ์๋ค.
์ ์ด์ ๊ทธ๋ฌ๋ฉด ๋ณธ๊ฒฉ์ ์ผ๋ก yarn berry๋ฅผ ์์๋ด
์๋ค.
์ฐธ๊ณ ๋ก yarn berry๋ yarn 2.x ๋ฒ์ ํน์ ๊ทธ ์ด์ ๋ฒ์ ์ yarn์ ๊ฐ๋ฆฌํค๋ ๋ณ์นญ์
๋๋ค. yarn 1.x ๋ฒ์ ์ yarn classic์ด๋ผ ๋ถ๋ฆ
๋๋ค.
์ฐธ๊ณ ๋ก yarn ๊ณต์ ์ฌ์ดํธ์ ๋ค์ด๊ฐ๋ฉด, yarn 2์ด์ ๋ฒ์ ์ ๋ํ ์ค๋ช
์ ๋จผ์ ๋ณด์ฌ์ค๋๋ค.
yarn ์ธก์์๋ yarn berry์ ๋ฐ์ด์ฃผ๊ณ ์๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ค์.
[์ค์ ํ๊ธฐ]
1.
ํฐ๋ฏธ๋ ์ฐฝ์์ ํ์ฌ ์์
์ค์ธ ํ๋ก์ ํธ ํด๋๋ก ์ด๋ํฉ๋๋ค
2.
์๋ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํฉ๋๋ค
yarn set version berry
Plain Text
๋ณต์ฌ
์์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด root์์ node_modules ๊ฐ ์ฌ๋ผ์ง๊ณ ์๋์ ๋๋ ํ ๋ฆฌ์ ํ์ผ์ด ์์ฑ๋ ํ
๋ฐ์
1. .yarn ๋๋ ํ ๋ฆฌ
2. .pnp.cjs ํ์ผ
3. .pnp.loader.mjsํ์ผ
์ด์ ๋ํด์ ์ ์ ํ ์๋์์ ์์ธํ๊ฒ ์์๋ณด๋๋ก ํฉ์๋ค
3.
์๋ ๋ช
๋ น์ด๋ฅผ ํตํด ๋ฒ์ ํ์ธ, ๋ฒ์ ์ด 2.x ์ด์์ด๋ฉด ์ฑ๊ณต์ ์ผ๋ก ์
๋ฐ์ดํธ๊ฐ ์๋ฃ๋๊ฒ๋๋ค.
yarn --version
Plain Text
๋ณต์ฌ
[ํน์ง ์์๋ณด๊ธฐ]
์ ์ด์ ์๋ก์ด yarn์ ํน์ง์ ์ดํด๋ณด์ฃ
yarn berry๋ zero install ๋ฐฉ์๊ณผ non zero install ๋ฐฉ์์ด๋ผ๋ 2๊ฐ์ง ์ํฌํ๋ก์ฐ๋ฅผ ์ง์ํ๊ณ ์์ต๋๋ค.
1.
์ ์๋ yarn berry๊ฐ ์ง์ํ๋ ์์ ํ ์๋ก์ด ๋ฉ์ปค๋์ฆ์ ํจํค์ง ๋งค๋์ง ๋ฐฉ์์ด๊ณ ,
2.
ํ์์ ๊ฒฝ์ฐ ๊ธฐ์กด์ node_modules๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์
๊ทธ๋ ์ด๋ ๋ฐฉ์์
๋๋ค. yarn classic๋ฐฉ์๊ณผ ๋ค๋ฅธ ์ ์, ๊ธฐ์กด ๋ฐฉ์์ด node_modules์ ๋ค์ด์๋ ํ์ผ๋ค์ ์ง์ ์ํํด์, ํจํค์ง ์์กด์ฑ์ ํ์
ํ๋ ๊ตฌ์กฐ์๋ค๋ฉด, yarn v2 ๋ถํฐ๋ .yarn ๋๋ ํ ๋ฆฌ์ zipํํ๋ก ์ ์ฅ๋ ํจํค์ง๋ค์ด node_modules์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํตํด, ์์กด์ฑ ์ ๋ณด๋ง ์ฐธ์กฐํ๋ ํํ๊ฐ ๋ฉ๋๋ค.
apollo server๋ฅผ ๊ธฐ์ค์ผ๋ก ํ
์คํธ๋ฅผ ์งํํ ๊ฒฐ๊ณผ ๊ธฐ์กด์ yarn classic์์ 50์ด ์ด์ ๊ฑธ๋ฆฌ๋ ํจํค์ง ๋ค์ด๋ก๋๊ฐ 1๋ฒ์ pnp + zero-install ๋ฐฉ์์ ๊ฒฝ์ฐ 3์ด๊ฐ ๊ฑธ๋ ธ๊ณ , 2๋ฒ์ node_modules + non-zero-install ๋ฐฉ์์ ๊ฒฝ์ฐ 7์ด๊ฐ ๊ฑธ๋ ธ์ต๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ํ๋ก์ ํธ๋ฅผ ์๋ก ํด๋ก ํด์ ํจํค์ง๋ฅผ ์๋ก ๋ค์ด๋ฐ์์ผํ ๋๋, ๋น๋ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ค์ผ ์ ์์ด, ๋ณด๋ค ํจ์จ์ ์ด๊ฒ ์ฃ
๊ทธ๋ ๋ค๊ณ pnp ๋ฐฉ์์ด ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ๋ ์ข๋ค๊ณ ๋งํ ์ ์์ต๋๋ค
ํจํค์ง์์ ํธํ์ฑ ์ฌ๋ถ์ ๋ฐ๋ผ, node_modules ๋ฐฉ์์ ์ฑํํด์ผํ ๋๋ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ค์ ๋ก yarn์์๋ pnp๋ฐฉ์์๋ ๋จ์ ์ด ์์ผ๋, node_modules ๋ฐฉ์์
ํจํค์ง๋งค๋์ง ๋ฐฉ์์ ๋ํ ์ง์์ ์ค๋จํ ์์ ์ด ์๋ค๊ณ ๊ณต์ ๋ฌธ์์์ ์ธ๊ธํ๊ณ ์์ต๋๋ค.
[zero-install ๊ณผ non-zero-install]
์์์ yarn berry๋ 2๊ฐ์ง ์ํฌํ๋ก์ฐ๋ฅผ ๋ชจ๋ ์ง์ํ๋ค๊ณ ์ธ๊ธ ํ๋๋ฐ์, ์ด๋ฒ์๋ ์ด 2๊ฐ์ง์ ๋ํด์ ์ข๋ ๊น๊ฒ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด 2๊ฐ์ง ์ํฌํ๋ก์ฐ๋ฅผ ๊ตฌ๋ถ์ ๋ช
ํํ ํด์ผ ์์
์ ํท๊ฐ๋ฆฌ์ง ์์ต๋๋ค. ๊ฐ ๋ฐฉ์์ ์ค์ ๋ฒ๊ณผ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๊ฐ ๋ค์ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด์ฃ .
์ ๊ทธ๋ฌ๋ฉด ์ด ์ฌํญ์ ์ผ๋ ํด๋๊ณ ๊ณ์ ๋ณด๋๋ก ํฉ์๋ค.
1.
zero-install๊ณผ non-zero-install ๋ ๋ฐฉ์ ๋ชจ๋ yarn ๋ช
๋ น์ด ์
๋ ฅ ์, root์ .yarn ๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋ฉ๋๋ค.
2.
ํจํค์ง ๋งค๋์ง์ pnp + zero-install ๋ฐฉ์์ผ๋ก ํ๊ณ ์ถ๋ค๋ฉด ํ๋ก์ ํธ root์ .yarnrc.yml์ ์๋์ ๊ฐ์ด ์ค์ ํด์ค๋๋ค.
## .yarnrc.yml
nodeLinker: 'pnp'
Markdown
๋ณต์ฌ
์์ ๊ฐ์ด ์ค์ ํ, yarn install์ ํ๋ฉด, node_modules ๋๋ ํ ๋ฆฌ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ node_modules ํด๋๊ฐ ์ฌ๋ผ์ง๊ณ root์ .pnp.cjs ํ์ผ๊ณผ .pnp.loader.mjs ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
์ด ํ์ผ๋ค์๋ .yarn/cache ์ ์๋ ํจํค์ง ํ์ผ๋ค์ ๋ํ ์์กด์ฑ์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ฒจ์์ต๋๋ค .yarn/cache์ zip ํํ๋ก ๋ค์ด์๋ ํจํค์ง ํ์ผ๋ค์ ์ด ํ์ผ๋ค์ ์ฐธ์กฐํฉ๋๋ค.
3.
ํจํค์ง ๋งค๋์ง์ node_modules + non-zero-install ๋ฐฉ์์ผ๋ก ํ๊ณ ์ถ๋ค๋ฉด .yarnrc.yml์
์๋์ ๊ฐ์ด ์ค์ ํฉ๋๋ค.
## .yarnrc.yml
nodeLinker: 'node-modules'
Markdown
๋ณต์ฌ
์์ ๊ฐ์ด ์ค์ ํ, yarn install์ ํ๋ฉด, .pnp.cjs์ .pnp.loader.mjs๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ๋ ํ์ผ์ด ์ฌ๋ผ์ง๊ณ , root์ node_modules ๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋ฉ๋๋ค. .yarn ๋๋ ํ ๋ฆฌ๋ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
.yarn/cache์ zip ํํ๋ก ๋ค์ด์๋ ํจํค์ง ํ์ผ๋ค์ node_modules๋ฅผ ์ฐธ์กฐํ์ฌ, ์์ ๋ค์ ์์กด์ฑ์ ๋ํ ์ ๋ณด๋ฅผ ํ์
ํฉ๋๋ค.
yarn berry๋ถํฐ๋ yarn์ด ์ฐธ์กฐํ ์ค์ ํ์ผ์ .npmrc ๋ .yarnrc ํ์ผ์ด ์๋๋ผ .yarnrc.yml ์ ์์ฑํ์ฌ ํ๋ก์ ํธ root์ ๋์์ผ ํฉ๋๋ค. ํ์ผ๋ช
์ ํผ๋ํ์ง ์๋๋ก ์ฃผ์ํฉ๋๋ค
[๋ง์น๋ฉฐ]
yarn berry์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ์ด์ ๋๋ฉด ์ถฉ๋ถํ ๋ฏ ์ถ์ต๋๋ค. yarn berry์ ์๋๋ฐฉ์์ ๋ํด ๋ณด๋ค ๊น์ด ์๊ฒ ์๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ธ์ด ๋์์ด ๋ ๊ฒ๋๋ค :)
๊ณ ์์ง Software Engineer
์ค์ ๋ก ๋์ํ๋ ๊ฒ์ ๋ง๋ค์ด๋ด๋ ์ฆ๊ฑฐ์์ผ๋ก ์ฌ๊ธฐ๊น์ง ์๊ณ ,
์ด์ ๋ ์ ์ ์๊ฒ ํจ์ต์ ์ฃผ๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐํฉ๋๋ค.