yarn berry ๋ฅผ ์ด์ฉํด์ monorepo ๋ฅผ ๊ตฌ์ฑํด ๋ณธ ํ๋ก์ ํธ.
monorepo๋ ์ฌ๋ฌ ๊ฐ์ ๊ฐ๋ณ ํ๋ก์ ํธ๋ฅผ ์ ์ ์๋ ๊ด๊ณ๋ฅผ ํตํด์ ํ๋์ repo์ ๋ด์ ๊ฒ์ ๋งํจ.
- ๋ก์ปฌ์ yarn์ด ์ค์น๋์ด ์์ง ์๋ค๋ฉด ์ค์น.
npm install -g yarn
- ํ๋ก์ ํธ์์ yarn berry๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ . (pwd ํ๋ก์ ํธ ํ์ผ์ root์์ ์ค์ ํฉ๋๋ค)
yarn set version berry
berry ์ค์ ํ ํ๋ก์ ํธ ๋ด๋ถ์์ yarn -v
์ผ๋ก yarn ๋ฒ์ ํ์ธ์ v2 ์ด์์ผ๋ก ๊น๋ ธ์์ ํ์ธ ํ ์ ์์ต๋๋ค.
- yarn ํ๋ก์ ํธ ์ด๊ธฐํ.
yarn init -w
-w
flag์ ํจ๊ป ์ด๊ธฐํํด์ฃผ๋ฉด package.json
ํ์ผ์ด ์๋ ์์ฑ๋ฉ๋๋ค.
ํ๋ก์ ํธ root์ ์์นํ package.json
์ workspace
์ ์ถ๊ฐ๋ ์์น๋ค์ ๊ฐ๋ณ ํ๋ก์ ํธ๋ก ์ทจ๊ธํฉ๋๋ค.
์ ์ปค๋งจ๋๋ก package.json
์์ฑ์ workspace์ ์ด๋ฏธ packages
๋ผ๋ ํด๋ ์์น๊ฐ ์ถ๊ฐ๋์ด ์์ต๋๋ค.
- ์ํ๋ ์์น์ ํ์ ํด๋๋ฅผ ์์ฑ.
./packages.json
์ workspace์ ํด๋น ์์น๋ฅผ ์ถ๊ฐ.
๊ทธ๋ฌ๊ณ ๋๋ฉด yarn workspace [ํ๋ก์ ํธ ์ด๋ฆ]
์ผ๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
์ธ๋ถ ํจํค์ง์ ๊ฒฝ์ฐ ์ฌํ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ด yarn add [ํจํค์ง ์ด๋ฆ]
ํ๋ฉด ๋ฉ๋๋ค.
workspace @cute/web ์์ ๋ค๋ฅธ workspace์ ์์นํ @pkg/lib๋ฅผ ์์กดํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์?
- ์ฐ์ @pkg/lib ์์ export ํ๊ณ ์๋ ๋ชจ๋์ด ์์ด์ผ ํ๋ค.
- @cute/web์ @pkg/lib ์์กด์ฑ์ ์ถ๊ฐํ๋ค.
yarn workspace @cute/web add @pkg/lib
- (TS๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ) ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ ์ค์ ์์ ํจํค์ง ์์น๋ฅผ ์๋ ค์ค๋ค.
@cute/web/tsconfig.json
{
"compilerOptions": {
(...)
"paths": {
"@pkg/lib": ["../../package/lib/src/index"]
}
},
(...)
}