packge.json의 workspaces

taker·2020년 10월 31일
0

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.jsonworkspaces에 사용할 패키지들의 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 workspacepkg1 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"
  }
}

주의

  • 사용될 패키지 뿐만 아니라 사용할 패키지도 workspaces에 추가해야 한다.
  • dependenciesworkspaces에 추가한 뒤yarn install을 해줘야 변경사항을 적용한다.
  • yarn으로 실행시켜야 workspaces 기능을 사용할수 있다.
profile
hello

0개의 댓글