pnpm 运行 基于位置的多个项目

pnpm run on multiples projects based on location

我在一个包含一些共享库、一些前端应用程序和一些后端应用程序的 pnpm 工作区内工作。示意图:

├── apps-front
│   ├── f1
│   └── f2
├── apps-back
│   ├── b1
│   └── b2
├── packages
│   ├── shared-common
│   └── shared-front

└── package.json

我想 运行 在包的子集上使用 pnpm 脚本。例如,当我在前端应用程序上工作时,我想为共享应用程序和两个前端应用程序启用“监视”,但不为后端应用程序启用。通常,共享的 React 组件是在真实条件下构建的,任何一方都可能发生代码更改。

所有这些包都包含一个“开发”脚本,用于监视更改和编译。这些脚本本质上是阻塞的,必须 运行 并行。

根据 pnpm documentation,运行 命令应该接受工作区和过滤器参数。

这是我的尝试:

pnpm run serve -r --parallel --filter {apps-front} --filter {packages}

但失败并出现此错误:pnpm.CMD: The command parameter was already specified.

如何修复命令?

PS:如果重要的话,pnpm 是 6.23.6,node 是 14.8,我在 W10 21H2 X64

其实是powershell终端的问题。用 " 封闭过滤器解决了问题:

pnpm run serve --stream --parallel --filter "{apps-front}" --filter "{packages}"

我想括号中的内容并没有按字面意思解释。

我还删除了 -r(递归选项)并添加了 --stream

这在工作区 package.json 中作为脚本也很有效:

{
    "scripts": {
        "devfront" : "pnpm run serve --stream​ --parallel --filter \"{apps-front}\" --filter \"{packages}\""
    }
}