workspaces | npm Docs

Node.js 가 모듈을 가져올 때, 경로를 해석하는 방식

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

Create Workspaces Root

➜ mkdir npm-workspaces-example

➜ cd npm-workspaces-example

➜ npm init -y

➜ code .
{
  "name": "npm-workspaces-example",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \\"Error: no test specified\\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

Create Workspace

➜ npm init -y -w ./packages/a

➜ npm init -y -w ./packages/b
{
  "name": "npm-workspaces-example",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \\"Error: no test specified\\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "workspaces": [
    "packages/a",
    "packages/b"
  ]
}
{
  "name": "npm-workspaces-example",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \\"Error: no test specified\\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "workspaces": [
    "packages/*"
  ]
}

특정 workspace 에 외부 의존성 추가

➜ npm i -w a axios
// npm-workspaces-example/package-b/index.js

const axios = require("axios");

module.exports = async function () {
  const response = await axios.get("<https://api.github.com/users>");

  return response.data;
};
// npm-workspaces-example/package-a/index.js

const b = require("b");

(async function main() {
  const users = await b();

  console.log(users.map((user) => user.login).join(", "));
})();

workspace 스크립트 실행하기

# 
➜ npm start --workspace a

# 
➜ npm start -w a

# 
➜ npm start --workspaces

# 
➜ npm start -ws

# 
➜ npm start -ws --if-present

# 
➜ npm start -ws --include-workspace-root

# 
➜ npm start -ws --if-present --include-workspace-root

의존 관계 살펴보기