Skip to content

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

Bun學習網由www.bunjs.com.cn整理維護