yarn -- https://classic.yarnpkg.com/en/docs/workspaces/
npm^7.0.0 -- https://docs.npmjs.com/cli/v7/using-npm/workspaces
nodejs에서 모듈을 사용하려면 상대경로를 사용해야 했다. 내부에서 사용할 목적으로 모듈을 만들더라도 경로를 일일이 입력해줘야 했고 아니면 npm으로 배포하고 dependencies
에 추가해줘야 했다. yarn은 그런 불편을 해소하기 위해서 workspaces
라는 기능을 추가했고 npm도 v7부터 해당기능을 그대로 지원하기로 했다.
최상위 디렉토리에서 package.json
의 workspaces
에 사용할 패키지들의 path를 추가하면 해당 패키지를 사용할 수 있다.
// 기존 nodejs
const { pkg1fn } = require('./<some paths>/pkg1/pkg1fn');
console.log('This is package 2 file \nand');
pkg1fn();
// workspaces를 사용
const { pkg1fn } = require('pkg1/pkg1fn');
console.log('This is package 2 file \nand');
pkg1fn();
디렉토리 구조
├── README.md
├── package.json
├── packages
│ ├── pkg1
│ │ ├── README.md
│ │ ├── package.json
│ │ └── pkg1fn.js
│ └── pkg2
│ ├── README.md
│ ├── package.json
│ └── pkg2fn.js
└── yarn.lock
root디렉토리 package.json workspace
에 pkg1
pkg2
추가
{
"private": true,
"workspaces": [
"packages/pkg1",
"packages/pkg2"
],
"name": "workspace"
}
pkg1의 package.json
{
"name": "pkg1",
"version": "1.0.0"
}
pkg2의 package.json에 dependencies
추가
{
"name": "pkg2",
"dependencies": {
"pkg1": "1.0.0"
}
}
dependencies
나 workspaces
에 추가한 뒤yarn install
을 해줘야 변경사항을 적용한다.yarn
으로 실행시켜야 workspaces
기능을 사용할수 있다.