主题
常用命令
根目录命令
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 devpnpm -r 默认不包含根 package。根目录脚本应使用 pnpm -w 单独执行。
与 Turborepo 的区别
pnpm --filter 和 pnpm -r 可以执行 workspace 范围内的脚本,但主要能力仍是包管理器命令。
当需要任务缓存、依赖拓扑排序、远程缓存和 CI 加速时,通常交给 Turborepo 处理。
