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 包管理器的完整文件,請參閱 文件 > 包管理器。