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 套件管理員的完整文件。