Skip to content

Bun 의 패키지 관리자는 npm "workspaces" 를 지원합니다. 이를 통해 코드베이스를 동일한 저장소에 있는 여러 개의 별도 "패키지"로 분할할 수 있으며 서로 의존할 수 있고 (가능한 경우) node_modules 디렉터리를 공유할 수 있습니다.

workspaces 를 실험하려면 이 샘플 프로젝트 를 복제하세요.


루트 package.json"dependencies", "devDependencies" 등을 포함하지 않아야 합니다. 각 개별 패키지는 자체적으로 포함되어야 하며 자체 의존성을 선언해야 합니다. 마찬가지로 루트 패키지를 실수로 npm 에 게시하지 않도록 "private": true 를 선언하는 것이 일반적입니다.

json
{
  "name": "my-monorepo",
  "private": true,
  "workspaces": ["packages/*"]
}

모든 패키지를 packages 디렉터리에 배치하는 것이 일반적입니다. package.json 의 "workspaces" 필드는 glob 패턴을 지원하므로 packages/* 를 사용하여 packages 의 각 하위 디렉터리를 별도의 패키지 (workspace 라고도 함) 로 간주하도록 표시할 수 있습니다.

txt
.
├── package.json
├── node_modules
└── packages
    ├── stuff-a
    │   └── package.json
    └── stuff-b
        └── package.json

workspace 간에 의존성을 추가하려면 "workspace:*" 구문을 사용합니다. 여기서는 stuff-astuff-b 의 의존성으로 추가합니다.

json
{
  "name": "stuff-b",
  "dependencies": {
    "stuff-a": "workspace:*"
  }
}

추가되면 프로젝트 루트에서 bun install 을 실행하여 모든 workspace 의 의존성을 설치합니다.

sh
bun install

특정 workspace 에 npm 의존성을 추가하려면 적절한 디렉터리로 cd 한 후 평소와 같이 bun add 명령어를 실행하면 됩니다. Bun 은 workspace 에 있는지 감지하고 필요에 따라 의존성을 hoist 합니다.

sh
cd packages/stuff-a
bun add zod

Bun 의 패키지 관리자에 대한 전체 문서는 문서 > 패키지 관리자 를 참조하세요.

Bun by www.bunjs.com.cn 편집