如何有条件地运行npm脚本

时间:2019-05-28 17:23:39

标签: npm npm-scripts

我正在寻找一种跨平台的方式来有条件地在构建脚本中运行一个步骤。

我的构建步骤很昂贵,但是检查是否有必要相对较快。我创建了一个脚本,如果不需要执行构建步骤,该脚本将返回非零错误代码。如何编写我的npm脚本以仅在检查通过的情况下运行构建,而在构建步骤失败的情况下提供错误?

示例package.json:

"scripts": {
    "schema:build": "npm run schema:rebuild-check && npm run schema:force-build",
    "schema:rebuild-check": "node tools/schema is-rebuild-necessary",
    "schema:force-build": "npm run schema:validate && npm run schema:generate-index && npm run schema:bundle"
}

上述问题是,如果不需要重建,则整个构建都会失败。我不能只用exitzero之类的东西来退出退出代码,因为我想知道在schema:force-build脚本中是否有任何命令失败。

1 个答案:

答案 0 :(得分:0)

问题来自两件事:

1)如果npm脚本以非零代码退出,npm总是会抱怨

2)需要提供一个使用||返回非零值的“ else”运算符

工作解决方案:

"schema:build": "node tools/schema is-rebuild-necessary && npm run schema:force-build || echo Skipping schema build",
"schema:force-build": "npm run schema:validate && npm run schema:generate-index && npm run schema:bundle"