Skip to content

Bun 的包管理器支持 npm "workspaces"。这允许你将代码库拆分为多个不同的"包",这些包位于同一个仓库中,可以相互依赖,并在可能时共享 node_modules 目录。

克隆 此示例项目 来试验工作空间。


package.json 不应包含任何 "dependencies""devDependencies" 等。每个单独的包应该是自包含的并声明自己的依赖。同样,按照惯例声明 "private": true 以避免意外地将根包发布到 npm

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

通常将所有包放在 packages 目录中。package.json 中的 "workspaces" 字段支持 glob 模式,因此你可以使用 packages/* 来表示 packages 的每个子目录应被视为单独的 (也称为工作空间)。

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

要在工作空间之间添加依赖,请使用 "workspace:*" 语法。这里我们将 stuff-a 添加为 stuff-b 的依赖。

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

添加后,从项目根目录运行 bun install 来为所有工作空间安装依赖。

sh
bun install

要为特定工作空间添加 npm 依赖,只需 cd 到相应的目录并像往常一样运行 bun add 命令。Bun 会检测你在工作空间中并按需提升依赖。

sh
cd packages/stuff-a
bun add zod

请参阅 文档 > 包管理器 获取 Bun 包管理器的完整文档。

Bun学习网由www.bunjs.com.cn整理维护