Bun

指南包管理器

使用 Bun 配置 monorepo 工作區

Bun 的包管理器支援 npm 的 "workspaces"。這允許您將程式碼庫拆分成多個位於同一儲存庫中的獨立“包”,這些包可以相互依賴,並且(在可能的情況下)共享一個 node_modules 目錄。

克隆 此示例專案 來試驗工作區。

根目錄的 package.json 不應包含任何 "dependencies""devDependencies" 等。每個單獨的包應是獨立的,並宣告自己的依賴項。同樣,宣告 "private": true 是慣例,以避免意外將根包釋出到 npm

package.json
{
  "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 的依賴項。

packages/stuff-b/package.json
{
  "name": "stuff-b",
  "dependencies": {
    "stuff-a": "workspace:*"
  }
}

新增後,從專案根目錄執行 bun install 來安裝所有工作區的依賴項。

bun install

要將 npm 依賴項新增到特定工作區,只需 cd 到相應目錄並像往常一樣執行 bun add 命令。Bun 將檢測到您位於工作區中,並根據需要進行提升。

cd packages/stuff-a
bun add zod

有關 Bun 包管理器的完整文件,請參閱 文件 > 包管理器