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:*"
  }
}