我想组织一个大型 NPM monorepo,以便我可以根据类别或模式在许多(但不是全部)工作区上运行命令。
这可以是子目录,也可以是工作区名称中的模式,如前缀或后缀,但我看不到任何单独在 NPM 中的方法。
在Yarn >= 2中,这可以使用带有全局模式的--include
or--exclude
标志yarn workspaces foreach
,例如:
yarn workspaces foreach --include "@namespace/plugin-*" --include "@namespace/preset-*" run build
...并且使用该名称空间和plugin-
orpreset-
前缀构建您的所有工作区。
在lerna中,该--scope
标志还采用了允许模式的 glob,例如:
lerna run --scope "@namespace/plugin-*" --scope "@namespace/preset-*" run build
但是在NPM中,据我所知,在 NPM 的v7和v8工作区文档中,它似乎没有相同的功能:
- 它有一个标志
--workspace
,可以多次使用来创建一个数组,但似乎只接受确切的工作区名称, - ...和一个似乎在所有工作区中运行的标志
--workspaces
,
...但是我看不到任何方法可以在目录中的所有工作区或与模式匹配的所有工作区上运行。我真的不想在每个脚本中按名称列出每个工作区,因为它们会很多。