2016-07-08 290 views
7

我正在尋找一種使用npm腳本同時運行tsc --watch && nodemon --watch的方法。我可以獨立運行這些命令,但是當我想運行它們時,只有第一個被執行。 例如。 如果我有這樣的腳本:有沒有辦法使用npm腳本來運行tsc -watch && nodemon --watch?

"scripts": {  
    "runDeb": "set NODE_ENV=development&& tsc --watch && nodemon --watch" 
    } 

tsc --watch執行,但nodemon不會被調用,反之亦然。

回答

6

嘗試將此添加到您的package.json:

"scripts": { 
    "start": "concurrently --kill-others \"tsc -w\" \"nodemon dist/app.js\"", 
} 

,並添加這個NPM包(同時,nodemon,打字稿)到您的package.json:

"devDependencies": { 
    "concurrently": "^2.2.0", 
    "typescript": "^1.8.10", 
    "nodemon": "^1.9.2", 
} 
+0

它的偉大工程,謝謝! –

+2

唯一的問題是'nodemon'在typescript完成它的工作之前就開始了,一個hack解決方案可能會給nodemon設置一個延遲,比如'nodemon --delay x'它給了'tsc'一些時刻。 –

+0

@NicolasDominguez,請參閱我的回覆,以確保在執行應用程序之前完成tsc的更改。 – AlterX

31

我想什麼你想是這樣的(我目前的設置):

"scripts": { 
    "compile": "tsc && node app.js", 
    "dev": "./node_modules/nodemon/bin/nodemon.js -e ts --exec \"npm run compile\"" 
} 

我創建了兩個腳本「compile」和「dev」。要開始開發,只需運行npm run dev,它啓動nodemon並使其看到.ts文件(使用-e標誌)。然後,每次.ts文件更改nodemon將exec基本編譯和運行節點應用程序的編譯任務。

雖然同時使用是一個不錯的選擇,但我的設置可以保證tsc的工作在嘗試執行生成的.js文件之前完成。

+0

確保在'tsconfig.json'文件中設置''watch':false'。否則'node app.js'永遠不會運行。 – Matt

+0

是的,但是tsc不會監視這些文件,除非你使用'-w' /'--watch'或者像'你在'tsconfig.json'中提到的''watch':true'那樣來告訴它。它應該是很好,使用這種技術 – AlterX

+0

很乾淨,謝謝! –

2

我一直在使用AlterX的解決方案一段時間,它已完美工作,但我發現它很慢。相反,我現在使用tsc-watch。它使tsc使用類似於-w標誌的增量編譯,使應用程序的重啓速度更快。

這就像把類似這樣的東西在你的package.json一樣容易:

"scripts": { 
    "start": "tsc-watch --onSuccess \"node .\"" 
} 
+1

這是一個很棒的解決方案!我能夠在回調中鏈接多個命令,如下所示:'--onSuccess「sh -c'babel && uglifyjs'」' –

相關問題