从shell脚本运行npm test时捕获npm ERR!

15

我有一个shell脚本,它从一个基础目录递归搜索package.json并像这样运行npm test。

find "$parent_dir" -name package.json -maxdepth 2 -execdir npm test \;

我希望以以下形式截取测试失败:

npm ERR! Test failed.  See above for more details.
npm ERR! not ok code 0

所以我可以让 shell 脚本以错误状态退出。

感谢任何帮助。


有类似的问题吗? - Mingtao Zhang
刚刚发现了一个类似于我的问题的提问,竟然两年了还没有答案... - Felipe
这里有一个相关的问题,可能会解决这个问题:https://dev59.com/IGMm5IYBdhLWcg3wIsfj - EGS
这个回答解决了你的问题吗?忽略shell脚本中特定的错误 - EGS
2个回答

7

又过了3年,我也在寻找解决方案。

最后找到了一个方法,如果将来有人需要帮助的话,可以使用shell脚本中的$?命令来返回上一个执行命令的退出状态。例如,如果shell脚本失败,则返回1,而成功则返回0。NPM实现了此返回值机制。

npm run test
if [ $? -eq 0 ]
then
  echo "SUCCESS"
else
  echo "FAIL"
fi

这对我没有起作用。脚本在测试的那一行总是出错。最终,我通过这个问题的答案解决了问题: https://dev59.com/IGMm5IYBdhLWcg3wIsfj - EGS
谢谢,永远不会太晚。 - BlackSlash

1
如果我理解正确,您希望在npm ERR!被抛出时执行某些操作或停止脚本的执行? 这可能会有所帮助:
 if ./somecommand | grep -q 'npm ERR!'; then
      #what you want to do
      # exit executing the script
      return
    fi

抱歉我来晚了两年,刚刚加入SO社区。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接