Bun 的包管理器支持 npm 的 "workspaces"。这允许您将代码库拆分成多个位于同一存储库中的独立“包”,这些包可以相互依赖,并且(在可能的情况下)共享一个 node_modules 目录。
克隆 此示例项目 来试验工作区。
根目录的 package.json 不应包含任何 "dependencies"、"devDependencies" 等。每个单独的包应是独立的,并声明自己的依赖项。同样,声明 "private": true 是惯例,以避免意外将根包发布到 npm。
{
"name": "my-monorepo",
"private": true,
"workspaces": [
"packages/*"
]
}
通常将所有包放在 packages 目录下。package.json 中的 "workspaces" 字段支持 glob 模式,因此您可以使用 packages/* 来指示 packages 的每个子目录都应被视为一个单独的包(也称为工作区)。
.
├── package.json
├── node_modules
└── packages
├── stuff-a
│ └── package.json
└── stuff-b
└── package.json
要在工作区之间添加依赖项,请使用 "workspace:*" 语法。这里我们将 stuff-a 添加为 stuff-b 的依赖项。
{
"name": "stuff-b",
"dependencies": {
"stuff-a": "workspace:*"
}
}添加后,从项目根目录运行 bun install 来安装所有工作区的依赖项。
bun install要将 npm 依赖项添加到特定工作区,只需 cd 到相应目录并像往常一样运行 bun add 命令。Bun 将检测到您位于工作区中,并根据需要进行提升。
cd packages/stuff-abun add zod有关 Bun 包管理器的完整文档,请参阅 文档 > 包管理器。