Bun 工作区管理 #
概述 #
Bun 原生支持 workspaces(工作区),可以方便地管理 Monorepo 项目中的多个包。
基本配置 #
package.json 配置 #
json
{
"name": "my-monorepo",
"private": true,
"workspaces": [
"packages/*"
]
}
目录结构 #
text
my-monorepo/
├── packages/
│ ├── core/
│ │ ├── package.json
│ │ ├── src/
│ │ └── tsconfig.json
│ ├── utils/
│ │ ├── package.json
│ │ └── src/
│ └── web/
│ ├── package.json
│ └── src/
├── package.json
└── bun.lockb
子包配置 #
packages/core/package.json #
json
{
"name": "@myorg/core",
"version": "1.0.0",
"main": "./src/index.ts",
"types": "./src/index.ts",
"dependencies": {
"typescript": "^5.0.0"
}
}
packages/utils/package.json #
json
{
"name": "@myorg/utils",
"version": "1.0.0",
"main": "./src/index.ts",
"dependencies": {
"@myorg/core": "workspace:*"
}
}
packages/web/package.json #
json
{
"name": "@myorg/web",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "bun --hot run src/index.ts",
"build": "bun build src/index.ts --outdir dist"
},
"dependencies": {
"@myorg/core": "workspace:*",
"@myorg/utils": "workspace:*",
"react": "^18.2.0"
}
}
工作区协议 #
workspace 协议 #
json
{
"dependencies": {
"@myorg/core": "workspace:*",
"@myorg/utils": "workspace:^"
}
}
| 协议 | 说明 |
|---|---|
workspace:* |
使用最新版本 |
workspace:^ |
使用兼容版本 |
workspace:~ |
使用相近版本 |
workspace:1.0.0 |
使用指定版本 |
安装依赖 #
安装所有依赖 #
bash
# 在根目录执行
bun install
为特定包添加依赖 #
bash
# 在 packages/web 中添加依赖
cd packages/web
bun add react-router
# 或从根目录
bun add react-router --filter @myorg/web
添加共享依赖 #
bash
# 在根 package.json 添加
bun add -d typescript -w
bun add -d eslint -w
运行脚本 #
运行特定包脚本 #
bash
# 在 packages/web 中运行
cd packages/web
bun dev
# 或使用 --filter
bun --filter @myorg/web dev
运行所有包脚本 #
bash
# 在所有包中运行 build
bun run build --filter '*'
实际示例 #
完整 Monorepo 配置 #
json
// package.json (根)
{
"name": "my-monorepo",
"private": true,
"workspaces": ["packages/*", "apps/*"],
"scripts": {
"dev": "bun run --filter '*' dev",
"build": "bun run --filter '*' build",
"test": "bun test",
"lint": "eslint packages apps"
},
"devDependencies": {
"typescript": "^5.0.0",
"eslint": "^8.0.0"
}
}
text
my-monorepo/
├── apps/
│ └── web/
│ ├── package.json
│ └── src/
├── packages/
│ ├── core/
│ │ ├── package.json
│ │ └── src/
│ └── ui/
│ ├── package.json
│ └── src/
├── package.json
├── tsconfig.json
└── bun.lockb
下一步 #
现在你已经了解了 Bun 工作区管理,接下来学习 脚本运行 了解更多脚本配置。
最后更新:2026-03-29