Skip to content

常用命令

根目录命令

bash
# 在根 package 中执行命令
pnpm -w <command>

# 在根目录添加开发依赖
pnpm -w add -D turbo

-w 表示 workspace root,用于明确操作根 package。

指定子包命令

使用 --filter 指定目标 package:

bash
# 在指定子包中执行脚本
pnpm --filter @vfan-monorepo/web dev

# 简写
pnpm -F @vfan-monorepo/web dev

# 在指定子包中安装依赖
pnpm --filter @vfan-monorepo/web add react

# 在指定子包中添加开发依赖
pnpm --filter @vfan-monorepo/web add -D vite

按目录筛选:

bash
# 在 apps/web 中执行命令
pnpm --filter ./apps/web dev

匹配多个子包:

bash
# 在所有 apps 下的子包执行 build
pnpm --filter './apps/*' build

# 在所有 packages 下的子包执行 lint
pnpm --filter './packages/*' lint

按依赖关系筛选

bash
# 执行 web 及其依赖 package 的 build
pnpm --filter @vfan-monorepo/web... build

# 执行依赖于 ui 的所有 package 的 build
pnpm --filter ...@vfan-monorepo/ui build

常见理解:

  • pkg...:包含 pkg 及其依赖。
  • ...pkg:包含依赖 pkg 的 package。

所有子包命令

bash
# 在所有 workspace 子包中执行 build
pnpm -r build

# 并行执行所有子包的 dev
pnpm -r --parallel dev

pnpm -r 默认不包含根 package。根目录脚本应使用 pnpm -w 单独执行。

与 Turborepo 的区别

pnpm --filterpnpm -r 可以执行 workspace 范围内的脚本,但主要能力仍是包管理器命令。

当需要任务缓存、依赖拓扑排序、远程缓存和 CI 加速时,通常交给 Turborepo 处理。

基于 MIT 许可发布