我在根级 package.json 中定义了一个脚本:
{
"workspaces": [
"packages/*"
],
"scripts": {
"clean": "rm -rf lib dist"
},
"private": true
}
我想在
packages/example
包的上下文中运行此脚本,它没有定义 clean
脚本。 (我想在我的所有工作区中重复使用这个脚本
我尝试运行
npm -w packages/example run clean
和 npm run clean -w packages/example
但这些命令在 clean
中搜索 packages/example/package.json
脚本:
npm ERR! Error: Missing script: "clean"
需要明确的是,我想通过在工作区根目录运行脚本来删除
lib
中的 dist
和 packages/example
文件夹。
注意:我使用这个干净的脚本作为示例。真正的脚本更复杂,我不想在所有工作区中重复它们
我发现的唯一解决方法是使用
--include-workspace-root
选项调用它,其中包括工作区根上下文。问题是它还会尝试在当前包上下文中运行脚本,因此如果您在 clean
包中定义了 example
脚本,它也会运行。如果它没有脚本,尽管它会引发错误,幸运的是它可以被 --if-present
标志抑制。
npm run --include-workspace-root --if-present clean