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