Npmスクリプトを使用してtsc --watch && nodemon --watch
を同時に実行する方法を探しています。このコマンドを個別に実行できますが、両方を実行する場合は、最初のコマンドのみが実行されます。例えば。このスクリプトがある場合:
"scripts": {
"runDeb": "set NODE_ENV=development&& tsc --watch && nodemon --watch"
}
tsc --watch
は実行されますが、nodemon
は呼び出されません。逆も同様です。
あなたが望むのは次のようなものだと思います(私の現在の設定):
"scripts": {
"compile": "tsc && node app.js",
"dev": "./node_modules/nodemon/bin/nodemon.js -e ts --exec \"npm run compile\""
}
2つのスクリプト「compile」と「dev」を作成しました。開発を開始するには、nodemonを起動して.tsファイルを監視するnpm run dev
を実行するだけです(-e
フラグを使用)。その後、.tsファイルが変更されるたびに、nodemonは、基本的にノードアプリをコンパイルして実行するコンパイルタスクをexec
します。
同時使用は良いオプションですが、私のセットアップでは、tsc
の作業が結果の.jsファイルの実行を試みる前に行われることを保証しています。
私はしばらくの間AlterXのソリューションを使用してきましたが、完全に機能しましたが、かなり遅いことがわかりました。代わりに、今では tsc-watch を使用しています。 tscが-w
フラグと同様のインクリメンタルコンパイルを使用するようにし、アプリケーションの再起動をより高速にします。
Package.jsonに次のようなものを入れるのと同じくらい簡単です。
"scripts": {
"start": "./node_modules/.bin/tsc-watch --onSuccess \"node .\""
}
これをpackage.jsonに追加してみてください:
"scripts": {
"start": "concurrently --kill-others \"tsc -w\" \"nodemon dist/app.js\"",
}
また、このnpmパッケージ(同時に、nodemon、TypeScript)をpackage.jsonに追加します。
"devDependencies": {
"concurrently": "^2.2.0",
"TypeScript": "^1.8.10",
"nodemon": "^1.9.2",
}
最新バージョンのnodemonを使用した10月2018での私のソリューション.
最初:
install nodemon
(npm install nodemon --save-dev
)およびts-node
(npm install ts-node --save-dev
)
second:nodemon.json
を作成します。 npmスクリプトを少し読みやすくするために、nodemonの設定をseperat nodemon.jsonに保持するのが好きです。そのため、プロジェクトのルートに次の内容のnodemon.json
を作成します。
{
"ignore": ["**/*.test.ts", "**/*.spec.ts", ".git", "node_modules"],
"watch": ["src"], // your .ts src folder
"exec": "npm start", // your npm script created in package.json
"ext": "ts"
}
次に、次のようなnpm start
スクリプトを作成します。
"scripts": {
...
"start": "ts-node src/server.ts",
"dev:ts": "nodemon",
...
}
次に、npm run dev:ts
またはyarn dev:ts
を実行し、TypeScriptサーバーコードをrunおよびwatchします。
Jest
単体テストなどの設定については、 this の記事をご覧ください。
TypeScript-Node-Starter
は高速です
https://github.com/Microsoft/TypeScript-Node-Starter/blob/master/package.json
"dev": "concurrently -k -n \"TypeScript,Node\" -c \"yellow.bold,cyan.bold\" \"npm run watch-ts\" \"nodemon ./dist/app.js\"",
"watch-ts": "tsc -w"
ここでは、npm run watch-ts
にTypeScript
名を付け(concurrently -n
を使用)、yellow.bold
を使用して色concurrently -c
を追加しています。
そのため、各プロセスのメッセージは非常に簡単に認識できます。
問題は、すべてのファイルに2つのウォッチャーがいることです。 1つはtsc -w
で、もう1つはnodemon
です。
.ts
ファイルに変更が加えられると、tsc
がそれを検出、コンパイルし、目的のフォルダーに.js
バージョンを作成します。
Nodemonの観点からは、(少なくとも).ts
と.js
の2つの変更を検出します。最初の変更では自動的に再起動しますが、2番目の変更では別の「開始」が既に行われていることを認識していないため、再起動を試みて失敗します。私にとっては、nodemonのバグです。 https://github.com/remy/nodemon/issues/76 を参照してください。
tsc-watch --onSuccess
を使用tsc-watch にはnode
を配置できる--onSuccess
があります。この方法では、ウォッチャーは1人だけになります。
Nodemonの再起動を簡単に遅らせることができます( -delay を参照)。最小限の設定変更が必要です。
設定できませんでしたが、nodemon
はこの方法で1つの変更のみを検出することを望んでいます。将来またはtscが複数のファイルを生成するときに問題が発生する可能性があります。