Skip to main content
Bun 的包管理器支持 npm 的 "workspaces"。这允许你将代码库拆分成多个独立的“包”,它们位于同一个仓库中,可以相互依赖,并且(在可能的情况下)共享一个 node_modules 目录。 克隆这个示例项目来尝试使用 workspaces。
根目录的 package.json 不应包含任何 "dependencies""devDependencies" 等。每个独立的包都应该是自包含的,并声明自己的依赖。同样,通常会声明 "private": true,以避免意外将根包发布到 npm 上。
package.json
{
  "name": "my-monorepo",
  "private": true,
  "workspaces": ["packages/*"]
}

通常会将所有包放在 packages 目录下。package.json 中的 "workspaces" 字段支持通配符模式,因此你可以使用 packages/* 来表示 packages 下的每个子目录都应被视为独立的 package(也称为 workspace)。
File Tree
.
├── package.json
├── node_modules
└── packages
    ├── stuff-a
    │   └── package.json
    └── stuff-b
        └── package.json

要在 workspaces 之间添加依赖,使用 "workspace:*" 语法。这里我们把 stuff-a 添加为 stuff-b 的依赖。
packages/stuff-b/package.json
{
  "name": "stuff-b",
  "dependencies": {
    "stuff-a": "workspace:*"
  }
}

添加后,从项目根目录运行 bun install 来安装所有 workspaces 的依赖。
terminal
bun install

要给某个特定的 workspace 添加 npm 依赖,只需切换到相应目录,然后像平常一样运行 bun add 命令。Bun 会检测你处于 workspace 中,必要时提升依赖。
terminal
cd packages/stuff-a
bun add zod

完整的 Bun 包管理器文档,请参见 文档 > 包管理器