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 包管理器的完整文檔。