Node.js
# Node.js 버전 확인
➜ node -v
v20.9.0
# v20.9.0 가 설치되어 있지 않다면
➜ nvm install 20.9.0
# v20.9.0 를 사용하고 있지 않다면
➜ nvm use 20.9.0
# Node.js 버전 다시 확인
➜ node -v
v20.9.0
npm
# npm 버전 확인
➜ npm -v
10.2.1
# 최신 버전 npm 으로 업그레이드
➜ npm i [email protected] -g
# npm 버전 다시 확인
➜ npm -v
10.2.1
pnpm
# pnpm 설치 확인 및 버전 확인
➜ pnpm -v
8.10.0
# 최신 버전 pnpm 으로 업그레이드
➜ npm i [email protected] -g
# pnpm 설치 다시 확인 및 버전 다시 확인
➜ pnpm -v
8.10.0
프로젝트 생성
➜ mkdir lerna-example
➜ cd lerna-example
➜ pnpx lerna init --dryRun
➜ pnpm lerna init
➜ corepack use [email protected]
➜ cat package.json
{
"name": "root",
"private": true,
"dependencies": {},
"devDependencies": {
"lerna": "^7.4.2"
},
"packageManager": "[email protected]+sha1.77d568bacf41eeefd6695a7087c1282433955b5c"
}
➜ cat pnpm-workspace.yaml
packages:
- 'packages/*'
➜ cat lerna.json
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
"version": "0.0.0",
"npmClient": "pnpm"
}
패키지 생성
➜ pnpm exec lerna create a -y
➜ pnpm exec lerna create b -y
외부 의존성 추가
➜ pnpm --filter b add axios
내부 의존성 추가
{
"name": "a",
"version": "0.0.0",
"description": "> TODO: description",
"author": "Woongjae Lee <[email protected]>",
"homepage": "",
"license": "ISC",
"main": "lib/a.js",
"directories": {
"lib": "lib",
"test": "__tests__"
},
"files": [
"lib"
],
"scripts": {
"test": "node ./__tests__/a.test.js"
},
"dependencies": {
"b": "workspace:*"
}
}