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