2015-11-01 46 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 

不要忘記在年底停止所有守護進程

問候