跳转到内容

多工作区支持

多工作区 pnpm -r 和 pnpm —filter * 有什么区别

在 pnpm 中,使用 pnpm -rpnpm --filter * 在多工作区(workspaces)项目中的行为实际上是相似的,但有一些微妙的区别。

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