如何在npm中运行知道退出代码的post脚本
我想在如何在npm中运行知道退出代码的post脚本,npm,Npm,我想在NPM run中运行一个post脚本,它将知道脚本是否失败 现在,post脚本的行为是,如果主脚本成功,它将运行。这样我就可以在成功时做些事了 但是,我还希望在出现故障时运行脚本。我该怎么做?我也在寻找这个问题的答案,我能做的最好的事情就是使用bash脚本始终运行post命令。这是我的npmbash #!/usr/bin/env bash # # Use this to catch control-c and cleanup. Won't run on Windows except in
NPM run
中运行一个post脚本,它将知道脚本是否失败
现在,post脚本的行为是,如果主脚本成功,它将运行。这样我就可以在成功时做些事了
但是,我还希望在出现故障时运行脚本
。我该怎么做?我也在寻找这个问题的答案,我能做的最好的事情就是使用bash脚本始终运行post命令。这是我的npmbash
#!/usr/bin/env bash
#
# Use this to catch control-c and cleanup. Won't run on Windows except in git bash or similar.
#
# Pass args you'd normally pass to npm - eg. npm run dev
# - if the args contain 'dev' or 'test' then the mongodb will be started up and shut down
# after it completes or control-c is pressed.
isDevOrTest=false
setIsDevOrTest() {
for i in "$@";
do
if [[ $i =~ "dev|test" ]]
then
echo "has dev or test"
isDevOrTest=true
fi
done
}
# Trap control-c
trap 'ctrl_c' INT
function ctrl_c() {
shutdown
exit 0
}
function shutdown() {
echo shutdown isDevOrTest: $isDevOrTest
if [[ $isDevOrTest ]]
then
echo Its dev or test so shut down mongo
mongo admin --eval 'db.shutdownServer()'
fi
}
function startup() {
echo startup
}
function run() {
echo npm "$@"
npm "$@"
}
setIsDevOrTest "$@"
startup
run "$@"
shutdown
为了帮助在npm
中保留尽可能多的内容,您可以执行定义为在主脚本之后运行的post脚本(例如poststart
到start
):
但是,如果成功,您需要确保只运行postscript一次(例如,npm中默认情况下,poststart
在start
之后运行,类似地,prestart
在它之前运行)。应该简单到:
function shutdown() {
if [[ "$?" != "0" ]]
then
# Only run if previous command was not successful
npm run poststart
fi
}
运行时使用:
npmbash run dev
npmbash run dev