Workspace
pnpm은 기본적으로 ('멀티패키지 레포지토리', '멀티프로젝트 레포지토리', '단일 레포지토리'로도 알려진) 모노레포를 지원합니다. 하나의 레포지토리에 다수의 프로젝트가 존재하는 작업 공간을 생성할 수 있습니다.
monorepo를 구성하려면 최상위 디렉토리에 pnpm-workspace.yaml
파일 또는 .npmrc
파일이 있어야 합니다.
모노레포의 관리에 대해 더 자세히 알고 싶으면 Bit에 대해 알아보세요. 내부적으로 pnpm을 사용하는 Bit은 기존에 pnpm/npm/Yarn으로 관리되는 workspace에서 수동으로 이루어지는 많은 일을 자동으로 처리합니다. Bit을 소개하는 bit install
과 관련된 글(Bit으로 어렵지 않게 모노레포 의존성 관리하기)을 살펴보세요.
Workspace 프로토콜 (workspace:)
기본적으로 pnpm은 이용 가능한 패키지가 선언된 버젼의 범위와 일치하는 경우에 workspace의 패키지를 참조합니다. 예를 들어, bar
의 dependencies와 workspace에 foo@1.0.0
이 존재한다면 bar
는 foo@1.0.0
을 참조합니다 그러나 bar
dependencies 항목에 "foo": "2.0.0"
있고 workspace에 foo@2.0.0
이 없으면 레지스트리에서 foo@2.0.0
설치됩니다. 이 동작은 불확실성을 가져옵니다.
다행히도 pnpm은 workspace:
프로토콜을 지원합니다. 이 프로토콜을 사용한다면, pnpm은 로컬 workspace 바깥의 패키지에서는 작업을 수행하지 않습니다. 만약 "foo": "workspace:2.0.0"
로 설정되어 있다면 workspace에 "foo@2.0.0"
가 없기 때문에 설치에 실패할 것입니다.
이 프로토콜은 link-workspace-packages 옵션이 false
로 설정된 경우에 특히 유용합니다. 이 경우, workspace:
프로토콜을 사용한다면 pnpm은 workspace에 있는 패키지만을 가져올 것입니다.