运行 仅当所有 ava 测试通过时才执行命令

run command only if all ava tests pass

我正在尝试编写一个 npm 脚本,它将 运行 ava,如果一切通过,将 运行 另一个(部署)命令。

如何在 js 中获取 ava 测试的结果,或者通过管道传输到文件或遵循命令?

所需的功能如下所示:

npm run safe-deploy

哪个会 运行 ava,如果一切都通过(由退出代码或解析输出决定)会 运行 另一个 cli 命令。

以前有没有人这样做过,如果有,最合适的解决方法是什么?

最简单的方法是使用 bash && 运算符。请查看 this answer 以获取更多详细信息。

它完全符合您的要求:仅在第一个命令成功执行的情况下运行第二个命令。

因此,例如,如果您有两个 npm testnpm run deploy,您可以将它们与 && 组合起来以创建 safe-deploy 命令。

deploy 命令只有在测试通过时才会执行。

这是一个最小的 package.json 你可以拥有:

{
  "name": "ava-safe-deploy",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "ava",
    "deploy": "echo 'deployed successfully!'",
    "safe-deploy": "npm test && npm run deploy"
  },
  "license": "ISC",
  "devDependencies": {
    "ava": "^0.25.0"
  }
}

如果测试失败,您会看到常规的 ava 错误消息: