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-a
bun add zod
請參閱 文件 > 套件管理員 以取得 Bun 套件管理員的完整文件。