Workspaces 는 단일 최상위 루트 패키지 내에서 로컬 파일 시스템의 여러 패키지를 관리할 수 있도록 지원하는 npm cli 의 기능 집합을 지칭하는 일반적인 용어입니다.
이 기능 집합은 로컬 파일 시스템에서 연결된 패키지를 처리하는 훨씬 더 간소화된 워크플로우를 구성합니다. npm install 의 일부로 링크 프로세스를 자동화하고 현재 node_modules 폴더에 심볼릭 링크해야 하는 패키지에 대한 참조를 추가하기 위해 npm link 를 수동으로 사용할 필요가 없습니다.
또한 npm install 중에 자동 심볼릭 링크되는 이러한 패키지를 단일 워크스페이스 라고 하는데, 이는 package.json workspaces 설정에 명시적으로 정의된 현재 로컬 파일 시스템 내에 중첩된 패키지를 의미합니다.
작업 영역은 일반적으로 package.json 파일의 workspaces 속성을 통해 정의됩니다:
{
"name": "my-workspaces-powered-project",
"workspaces": [
"packages/a"
]
}
위의 package.json 예제가 현재 작업 디렉터리 . 에 있는 있다고 가정하고, 그 안에 package/a 라는 폴더가 있고 그 안에 이 포함되어 있으며, Node.js 패키지를 정의합니다:
.
+-- package.json
`-- packages
+-- a
| `-- package.json
이 현재 작업 디렉터리에서 npm install 를 실행하면 예상되는 결과는 packages/a 폴더가 현재 작업 디렉터리의 node_modules 폴더에 심볼릭 링크된다는 것입니다.
아래는 이전의 예시와 동일한 파일 및 폴더 구조를 고려한 npm install 후 예시입니다:
.
+-- node_modules
| `-- a -> ../packages/a
+-- package-lock.json
+-- package.json
`-- packages
+-- a
| `-- package.json
npm init 을 사용하여 새 workspace 를 정의하는 데 필요한 단계를 자동화할 수 있습니다.
예를 들어 이미 package.json 이 정의되어 있는 프로젝트에서 다음 명령어를 실행할 수 있습니다: