2016-07-08 11 views
7

npmスクリプトを使用してtsc --watch && nodemon --watchを同時に実行する方法を探しています。私はこのコマンドを単独で実行することができますが、両方を実行したい場合は、最初のコマンドだけが実行されます。例えば、 。私はこのスクリプトがあれば は:nscriptを使って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\"", 
} 

そしてまたあなたのpackage.jsonに、このNPMパッケージ(同時に、nodemon、typescriptです)を追加します。

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

、ありがとう! –

+2

唯一の問題は、typescriptが仕事を終える前に 'nodemon'が起動することです。一つのハック解決策は、' nodemon --delay x'のようにnodemonに遅延を設定して、 '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"の2つのスクリプトを作成しました。開発を始めるには、単にnpm run devを実行してnodemonを起動し、.tsファイルを見るようにします(-eフラグを使用)。次に、.tsファイルがnodemonに変更されるたびに、execは基本的にノードappをコンパイルして実行するコンパイルタスクになります。

同時に使用することは良い選択ですが、私の設定では、結果の.jsファイルを実行しようとする前にtscの作業が完了することが保証されています。

+0

'tsconfig.json'ファイルに' 'watch":false'を設定してください。それ以外の場合、 'node app.js'は決して実行されません。 – Matt

+0

ええ、tsconfig.json' soで 'watch":trueを指摘したように、 '-w' /' --watch'または '' watch "このテクニックを使用するだけでいいはずです – AlterX

+0

非常にきれいな、ありがとう! –

2

私はAlterXのソリューションをしばらく使用していましたが、それは完璧に機能しましたが、かなり遅いと感じました。代わりに、私は現在tsc-watchを使用しています。 tscは-wフラグに似たインクリメンタルコンパイルを使用するため、アプリケーションの再起動がはるかに高速になります。

それはあなたのpackage.jsonでこれに似た何かを置くのと同じくらい簡単です:それは素晴らしい作品

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

これは素晴らしい解決策です!私はこのようにコールバックで複数のコマンドをチェーンすることができました: '--onSuccess" sh -c 'babel && uglifyjs "" ' –

関連する問題