์ผ๋จ Yarn Berry๋ผ๋๊ฒ ๋ญ๊น์?!
Yarn Berry๋ 2020๋ 1์์ ์ถ์๋ Yarn Classic ์ ์ ๊ทธ๋ ์ด๋ ๋ฒ์ ์ ๋๋ค.
์๋กญ๊ฒ ๋ค๋ฐ๋ ํจํค์ง ๋งค๋์ ๋ผ๋ ๊ฒ์ ๋ถ๋ช ํ๊ฒ ํ๊ธฐ ์ํด yarn ํ์์๋ Yarn Berry ๋ผ๊ณ ์ด๋ฆ์ ๋ถ์์ต๋๋ค.
์ด๋ฐ Yarn Berry๋ PnP(Plug'n'Play) ๋ชจ๋๋ฅผ ํตํด node_modules ํด๋ ์์ด๋ ํจํค์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ถ๋ช ๊ทธ๋ ๊ฒ ์๊ณ ์์์ต๋๋ค!!
๊ทธ๋ฐ๋ฐ, PnP ๋ชจ๋๋ฅผ ์ฌ์ฉํ๊ณ ์์์๋ ๋ถ๊ตฌํ๊ณ yarn start๋ฅผ ์คํํ๋ฉด node_modules ํด๋๊ฐ ์๊ธฐ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ๋ฐ์ํฉ๋๋ค.
๋ฐ๋ ์ ๋ ์ ์ ์์ฑํ ์๋ฆฌ๋ ํ๋ก์ ํธ์์๋ ๊ณ์ํด์ node_modules๊ฐ ์์ฑ๋์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด, ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋๋ ๊ฑธ๊น์?
1. PnP ๋ชจ๋์ ๊ธฐ๋ณธ ๊ฐ๋
PnP ๋ชจ๋๋ Yarn Berry์ ์ฃผ์ ๊ธฐ๋ฅ ์ค ํ๋๋ก, ์ ํต์ ์ธ node_modules ํด๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
์ด ๋ชจ๋์์๋ ์์กด์ฑ ํ์ผ๋ค์ด .pnp.cjs๋ผ๋ ํ์ผ ํ๋์ ๋ชจ๋ ์ ์ฅ๋๊ณ , ์ด ํ์ผ์ ํตํด ํ์ํ ํจํค์ง๋ค์ ์ง์ ๋ถ๋ฌ์ต๋๋ค.
์ด๋ก ์ ์ผ๋ก๋ node_modules ํด๋๊ฐ ์ ํ ํ์ํ์ง ์๊ฒ ๋ฉ๋๋ค.
2. ์ node_modules๊ฐ ๋ค์ ์์ฑ๋ ๊น?
a. ํน์ ํจํค์ง์ ํธํ์ฑ ๋ฌธ์
์คํฐ๋์๊ณผ ํ์ตํด ๋ณธ ๊ฒฐ๊ณผ ์ผ๋ถ ํจํค์ง๋ค์ PnP ๋ชจ๋์์ ์ ์์ ์ผ๋ก ๋์ํ์ง ์์ ์ ์์ต๋๋ค.
ํด๋น ํจํค์ง๊ฐ ์ฌ์ ํ node_modules ํด๋์ ์์กดํ๊ณ ์๊ฑฐ๋, ํน์ ํ์ผ๋ค์ ์ง์ ์ ๊ทผํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ํจํค์ง์์ fs ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์์กด์ฑ์ ํ์ผ์ ์ง์ ์ฝ์ผ๋ ค ํ ๋, node_modules ๊ฒฝ๋ก๋ฅผ ํ๋์ฝ๋ฉํ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ฐ ์ํฉ์์ Yarn์ ํจํค์ง ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์๋์ผ๋ก node_modules ํด๋๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค.
์์ฒ๋ผ ์์๋ก ๊ฒฐ๋ก ์ง๊ฒ ๋์์ง๋ง ๊ต์ฐจ ๊ฒ์ฆ์ด ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ชป๋ ๋ด์ฉ์ด ์๋ค๋ฉด ์ธ์ ๋ผ๋ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.
b. Webpack์ด๋ Vite ๊ฐ์ ๋ฒ๋ค๋ฌ์ ์บ์ ์ฒ๋ฆฌ
Webpack์ด๋ Vite ๊ฐ์ ๋ฒ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ ๋๋ node_modules ํด๋๊ฐ ์์ฑ๋ ์ ์์ต๋๋ค.
๋ฒ๋ค๋ฌ๋ ์ข ์ข ์์กด์ฑ ํ์ผ๋ค์ ๋ฏธ๋ฆฌ ํธ๋์คํ์ผ๋งํ์ฌ ์บ์ฑํ๋๋ฐ, ์ด ์บ์ ํ์ผ๋ค์ด ๊ธฐ๋ณธ์ ์ผ๋ก node_modules/.cache ํด๋์ ์ ์ฅ๋ฉ๋๋ค. ์ด ๊ณผ์ ์์ ์๋์น ์๊ฒ node_modules ํด๋๊ฐ ์์ฑ๋ ์ ์์ต๋๋ค.
c. ํน์ ์์กด์ฑ ๋ฒ์ ๋ฌธ์
esbuild ๊ฐ์ ํน์ ํจํค์ง์ ๋ฒ์ ์ด PnP ๋ชจ๋์์ ์๋ฒฝํ ํธํ๋์ง ์์ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ, ์์กด์ฑ ํธ๋ฆฌ์์ ํน์ ํจํค์ง๊ฐ ํ์ ํธํ์ฑ์ ๊ฐ์ง์ง ๋ชปํด node_modules ํด๋๊ฐ ์์ฑ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, esbuild ๋ฒ์ ์ด 0.15.15๋ณด๋ค ๋ฎ๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ์ด ๊ฒฝ์ฐ ๋ฒ์ ์ ์ ๊ทธ๋ ์ด๋ํจ์ผ๋ก์จ ํด๊ฒฐํ ์ ์์ต๋๋ค.
3. ํด๊ฒฐ ๋ฐฉ๋ฒ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด๋ณผ ์ ์์ต๋๋ค:
- ํจํค์ง ๋ฒ์ ์ ๊ทธ๋ ์ด๋: esbuild๋ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์๋ ํจํค์ง๋ค์ ๋ฒ์ ์ ์ต์ ์ผ๋ก ์ ์งํ๋ ๊ฒ๋๋ค. yarn.lock ํ์ผ์ ์๋์ผ๋ก ์์ ํ์ฌ ์ํ๋ ๋ฒ์ ์ ๋ช ์ํ ์๋ ์์ต๋๋ค.
- ๋ฒ๋ค๋ฌ ์ค์ ์กฐ์ : Webpack์ด๋ Vite์ ์ค์ ์์ ์บ์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, cacheDir ์ต์ ์ ์ฌ์ฉํ์ฌ .cache ํด๋์ ์์น๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- Yarn ์ค์ ์กฐ์ : ํจํค์ง์ ํน์ ์ค์ , ์๋ฅผ ๋ค์ด preferUnplugged ์ค์ ์ ํตํด node_modules๊ฐ ์์ฑ๋์ง ์๋๋ก ์ ๋ํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
ํน์ ์ํฉ์์ node_modules ํด๋๊ฐ ์์ฑ๋๋ ๊ฒ์ ์ด๋ฐ ํธํ์ฑ ๋ฌธ์ ๋๋ฌธ์ด๋ฉฐ, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์์กด์ฑ ๋ฒ์ ์ ์ ๊ทธ๋ ์ด๋ํ๊ฑฐ๋, ๋ฒ๋ค๋ฌ์ ์ค์ ์ ์กฐ์ ํ๋ ๋ฑ์ ์กฐ์น๊ฐ ํ์ํ ๊ฑธ๋ก ์๊ฐ๋ฉ๋๋ค!
Yarn์ด ์์ผ๋ก ๋ ๋ฐ์ ํ๋ฉด์ ์ด๋ฌํ ๋ฌธ์ ๋ค์ด ์ ์ ํด๊ฒฐ๋ ๊ฒ์ผ๋ก ์๊ฐ๋๋, ๊ทธ๋๊น์ง๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ธ์งํ๊ณ ์ ์ ํ ๋์ํ๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค์.
๐ ์ฐธ๊ณ ๋ฌธํ | ||
yarn ๋ฃฐ๋ถ | ||
GitHub - esbuild๊ฐ Yarn PnP ๋ฆฌํฌ์งํ ๋ฆฌ์ node_modules/.cache ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑ |