0

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

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

└── package.json

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

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

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

这是我尝试过的:

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

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

如何修复命令?

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

4

1 回答 1

1

实际上,这是由于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}"" } }

于 2021-12-10T15:30:35.037 回答