monorepo 세팅: PNPM
2023.04.02
pnpm 설치
reference
corepack으로 설치하기
corepack enable
brew install corepack
node v16.13부터 corepack를 사용할 수 있습니다. 이것을 활성화해야하는데
brew install corepack
로 설치할 수 있습니다.
-
최신 버전의 pnpm을 설치하기
corepack prepare pnpm@<version> --activate
-
node v16.17 이상에서는
latest
태그로 마지막 버전을 설치 가능하다corepack prepare pnpm@latest --activate
-
npm으로 설치하기
npm install -g pnpm
or
npm install -g @pnpm/exe
homebrew로 설치하기
brew install pnpm
pnpm 모노레포 세팅
-
사용할 폴더 생성
mkdir apps
mkdir packages
-
결과
├── README.md ├── apps └── packages
-
workspace
루트에
pnpm-workspace.yaml
파일 생성pnpm-workspace.yamlpackages: - 'apps/*' - 'packages/*'
apps 및 packages 폴더 하위의 폴더들이 pnpm workspace로 설정 됩니다.
-
apps에 nextjs 설치
cd apps pnpm create next-app
-
packages 폴더에 공통으로 사용할 패키지 구성
mkdir ui
mkdir libs
packages/lib/package.json{ "name": "@my-monorepo/lib", "scripts": { "dev": "ts-node src/index.ts" } }
packages/lib/package.json{ "name": "@my-monorepo/ui", "scripts": { "dev": "ts-node src/index.ts" } }
-
script 작성하기
-
workspace의
단일
script 실행하기pnpm -F {workspace명} {script명} or pnpm -filter {workspace명} {script명}
ex)
pnpm -F @my-monorepo/ui {스크립트명}
ui의 script에 'dev'가 있다면
pnpm -F @my-monorepo/ui dev
를 하면 된다. -
workspace의
모든
script 실행하기pnpm -r {script명} or pnpm -recursive {script명}
ex)
pnpm -r dev
모든 모노레포의 script에 dev를 실행 시킨다.
-
공통 모듈 공유하기
pnpm {A} add {B}
B를 A에 추가한다.
ex) pnpm web add @my-monorepo/ui
-
root에 설치하기
pnpm add -w {package 명령어}
ex) pnpm add -w -D prettier
-