多工作区支持
约 385 字大约 1 分钟
2025-11-09
多工作区 pnpm -r 和 pnpm --filter * 有什么区别
在 pnpm 中,使用 pnpm -r 和 pnpm --filter * 在多工作区(workspaces)项目中的行为实际上是相似的,但有一些微妙的区别。
pnpm -r或pnpm --recursive:这个命令会对所有的工作区执行操作。例如,pnpm install -r会为每个工作区安装依赖项。这个命令通常用于批量操作,比如安装、更新或构建所有的工作区。pnpm --filter *:这个命令也会对所有的 workspace 包执行操作,但是它有一些额外的灵活性。--filter参数允许你指定更具体的包或工作区。例如,pnpm install --filter package-name只会为特定的包安装依赖项。使用*作为过滤器会匹配所有的工作区,因此在这种情况下,它的效果和-r或--recursive是一样的。 然而,--filter参数的一个关键特性是它允许你使用 glob 模式来匹配工作区的名称,或者指定包的版本范围。这意味着你可以对特定的工作区执行操作,而不必影响其他的工作区。例如,pnpm install --filter 'workspace-*'会匹配所有以workspace-开头的工作区。 总的来说,如果你只是想要对所有工作区执行某个操作,pnpm -r和pnpm --filter *可以互换使用。但如果你需要更细粒度的控制,--filter提供了更多的灵活性和选择性。