๐ yarn berry๋ก ๋ฆฌ์กํธ ํ๋ก์ ํธ ์์ฑํ๊ธฐ
๊ธฐ์กด ํจํค์ง ๋งค๋์ ๋๋น yarn berry์ ๊ฐ์ฅ ํฐ ๋ณํ ์ค ํ๋๋ Plug'n'Play (PnP) ๊ธฐ๋ฅ์ ๋๋ค.
PnP๋ node_modules
ํด๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์์กด์ฑ์ ๊ด๋ฆฌํฉ๋๋ค.
๋์ , Yarn์ ํ๋ก์ ํธ ์ค์ ๊ณผ ์์กด์ฑ ์ ๋ณด๋ฅผ .pnp.js
ํ์ผ์ ์ ์ฅํ์ฌ, Node.js๊ฐ ํ์ํ ํจํค์ง๋ฅผ ์ง์ ์ฐพ์ ์ ์๋๋ก ํฉ๋๋ค.
์ค์น ์๋๋ฅผ ๋์ด๊ณ ๋์คํฌ ๊ณต๊ฐ์ ์ ์ฝํ๋ yarn berry์ zero-install
์ ์ด์ฉํ๊ธฐ ์ํด์ ์ค์น ๋ฐฉ๋ฒ๊ณผ ํ๋ก์ ํธ ์์ฑ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
๐ yarn beery ์ค์
๐ 1. Node.js ์ค์น
yarn์ ์ค์นํ๊ธฐ ์ํด์๋ node ํจํค์ง์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋ npm์ด ํ์ํฉ๋๋ค.
์ค์นํ์ง ์์๋ค๋ฉด ์ฐ์ ์ ๋งํฌ ํน์ nvm์ ์ด์ฉํด node๋ฅผ ์ค์นํด์ค๋๋ค.
๐ 2. yarn ์ค์น
์๋ฐ์คํฌ๋ฆฝํธ์ ํจํค์ง ๋งค๋์ ์ธ yarn์ ์ค์นํด์ค๋๋ค.
$ npm install -g yarn
$ yarn --version
๐ ๋ฆฌ์กํธ ํ๋ก์ ํธ์ yarn berry ์ ์ฉ
๐ 1. ํ๋ก์ ํธ ์์ฑ
๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ๊ตฌ๋ํ๊ธฐ ์ํด ํ์ํ ๋ค์ํ ๋ชจ๋๋ค์ ์ผ๊ด์ ์ผ๋ก ์ค์นํ๊ธฐ ์ํด ์ฐ์ CRA๋ฅผ ์ด์ฉํด ํ๋ก์ ํธ๋ฅผ ์์ฑํด์ค๋๋ค.
$ npx create-react-app yarn-berry-app --template typescript
๐ 2. npm ๊ด๋ จ ํ์ผ ์ญ์
yarn-berry์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ธ zero-install
์ ์ฌ์ฉํ๋ฉด node_modules
ํด๋๊ฐ ์์ด ํด๋ ์ฉ๋์ ํฌ๊ฒ ์ค์ผ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
ํ์ง๋ง npm
์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ถ์ฐ๋ฌผ์ธ node_modules
์ package.lock.json
์ด ์์ฐ์ค๋ฝ๊ฒ ๋ฐ๋ผ์ค๊ฒ ๋ฉ๋๋ค.
yarn-berry๋ก ์ ํ์ ์ํด ์ด ๋ ์์กด์ฑ ๋ถ์ฐ๋ฌผ๋ค์ ์ง์์ฃผ๋๋ก ํฉ๋๋ค.
๐ 3. ํ๋ก์ ํธ์ yarn berry ์ ์ฉ
$ yarn set version berry
์ฑ๊ณต์ ์ผ๋ก berry ๋ฒ์ ์ด ์ ์ฉ๋์๋ค๋ฉด ์์ ๊ฐ์ ๋ก๊ทธ๋ค์ด ํ์๋๊ณ ๋ค์ ๋ช ๋ น์ด๋ก ํจํค์ง๋ฅผ ์ค์นํด์ค๋๋ค.
$ yarn install
ํจํค์ง ์ค์น๋ฅผ ๋๋ง์ณค๋ค๋ฉด ํด๋์ ๋ค์๊ณผ ๊ฐ์ ํ์ผ ๊ตฌ์ฑ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ zero-install ์๋๋ฐฉ์
๋ฌธ๋ ์ค์น ๊ณผ์ ์ ์งํํ๋ค ํจํค์ง๊ฐ ์์ถ๋์ด ์๋๋ฐ ์ด๋ป๊ฒ ํจํค์ง๋ฅผ ๋ถ๋ฌ์์ ์ฌ์ฉํ ์ ์๋์ง ๊ถ๊ธํด์ก์ต๋๋ค.
์ฐพ์๋ณด๋ ์ด๋ฌํ yarn-berry์ ์๋ ๋ฐฉ์์ PnP(Plug’n’Play)
์ ์ํด ์์ถ๋์ด์ง ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ ์ ์์์ต๋๋ค.
๐ Plug'n'Play (PnP) ์๋ ๋ฐฉ์
๐ ํจํค์ง ์ค์น ์์น
yarn์ ์ค์ ํ์ผ(.yarnrc.yml
)์ ํ์ธํ์ฌ ์บ์ ๋๋ ํ ๋ฆฌ๊ฐ ์ด๋๋ก ์ค์ ๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
๐ ์์ถ๋ ํ์ผ ์ฌ์ฉ
์ค์น๋ ํจํค์ง๋ .zip
ํํ๋ก ์์ถ๋์ด ์ ์ฅ๋ฉ๋๋ค. Yarn Berry๋ ์ด ์์ถ๋ ํ์ผ๋ค์ ์ง์ ์ฝ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ ๋์คํฌ ๊ณต๊ฐ์ ์ ์ฝํ๊ณ , ํ๋ก์ ํธ์ ์์กด์ฑ์ ๋ ๋ช ํํ๊ฒ ๊ด๋ฆฌํ ์ ์๊ฒ ํฉ๋๋ค.
๐ .pnp.js
๋๋ .pnp.cjs
Yarn Berry๋ .pnp.js
๋๋ .pnp.cjs
ํ์ผ์ ์์ฑํ์ฌ, ์ด๋ค ํจํค์ง๊ฐ ์ด๋์ ์์นํ๋์ง ๊ธฐ๋กํฉ๋๋ค.
์ด ํ์ผ์ Node.js๊ฐ ์ด๋ค ์์ฒญ์ ์ด๋ค ํจํค์ง๋ก ๋ฆฌ๋๋ ์ ํ ์ง ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๐ ํจํค์ง ํด์
Node.js๋ ํ์ํ ๋ชจ๋์ ์ฐพ์ ๋ .pnp.js
ํ์ผ์ ์ฐธ์กฐํ์ฌ ์์ถ๋ ํ์ผ ๋ด์์ ํด๋น ๋ชจ๋์ ์ง์ ์ฐพ์ต๋๋ค.
์ด๋ ์ ํต์ ์ธ node_modules
๋ฐฉ์๋ณด๋ค ํจ์ฌ ํจ์จ์ ์ด๋ฉฐ, "๋ชจ๋ ์ง์ฅ" ๋ฌธ์ ๋ฅผ ํผํ ์ ์์ต๋๋ค.
๐ Zero-Install
Yarn Berry์ Zero-Install ๊ธฐ๋ฅ์ .yarn/cache
์ ์ ์ฅ๋ ํจํค์ง๋ฅผ ํ๋ก์ ํธ์ ํจ๊ป ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์ ํฌํจ์ํต๋๋ค.
์ด๋ก ์ธํด ๋ค๋ฅธ ๊ฐ๋ฐ์๋ CI/CD ์์คํ ์์ ๋ณ๋์ ํจํค์ง ์ค์น ๊ณผ์ ์์ด๋ ํ๋ก์ ํธ๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
๋๊ธ