多工作区支持
多工作区 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
提供了更多的灵活性和选择性。