2015-11-01 70 views
2

我有三个脚本我需要在一个序列中运行,中间启动一个expressjs服务器。npm脚本按顺序与expressjs

这里是我的脚本:

  1. npm run build

  2. npm start

  3. node ./node_modules/nightwatch/bin/runner.js -c ./nightwatch.json

之所以存在是nightwatch需要一台服务器上运行,以测试,但是当启动expressjs时,我被卡在日志/进程中而没有继续执行下一个脚本。当我有npm start &它在后台运行它,但比Nightwatch第三个脚本启动需要更长的时间,所以Nightwatch会打电话给haven't-start-yet服务器并失败。

回答

1

你可以添加一个脚本的package.json,比如我补充说,按顺序运行三个命令表脚本,每一个命令才能运行先前的命令是成功的,这样我就可以运行:运行故宫钟表

package.json 
"scripts": { 
    "nightwatch": "node ./node_modules/nightwatch/bin/runner.js -c 
    ./nightwatch.json", 
    'build':'.....', 
    'start':'.....', 
    "watch":'npm run build && npm start && npm run nightwatch' 
    } 

希望这可以帮助,没有经过测试,你可以阅读本reference

+0

这就是我现在有,问题是开始脚本是expressjs,它是一个在您执行CMD + C之前不会关闭的进程,因此它永远不会进入第三个进程。 –

+0

尝试更改&&到&, – cshion

+0

但服务器启动时需要大约3-4秒,而夜间启动立即启动,服务器没有运行,并且失败 –

2

的技巧是使用forever包来运行服务器作为后台程序,并使用睡眠命令等待服务器启动前将上升nightwatchjs。

下面是故宫脚本命令:

forever start app.js && sleep 5 && nightwatch --env chrome,default && forever stopall 

不要忘记在年底停止所有守护进程

问候