TypeScriptとAngularアプリケーションを使用して、毎回tsファイルをトランスパイルせずに開発サーバーを実行しようとしています。で実行できることがわかりましたが、gulp ts-node
watchの.ts
場合と同じように、ファイルを監視してアプリ/サーバーをリロードしたいと思います。
TypeScriptとAngularアプリケーションを使用して、毎回tsファイルをトランスパイルせずに開発サーバーを実行しようとしています。で実行できることがわかりましたが、gulp ts-node
watchの.ts
場合と同じように、ファイルを監視してアプリ/サーバーをリロードしたいと思います。
回答:
nodemon
カスタムコマンドを実行するためにAPIでデフォルトの動作を変更できることに気づくまで、私は開発環境で同じことに苦労していました。例えば:
nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/index.ts
またはさらに良い:Sandokanが示唆nodemon.json
したように、nodemonの設定を次の内容のファイルに外部化し、を実行しますnodemon
。
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./index.ts" }
これによりts-node
、基盤となる実装を気にすることなく、プロセスをライブでリロードできます。
乾杯!
nodemonの最新バージョン用に更新:
nodemon.json
次の内容のファイルを作成します。
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "ts-node ./src/index.ts" // or "npx ts-node src/index.ts"
}
{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "exec": "ts-node ./app-server.ts" }
、ちょうどタイプnodemon
./
フォルダ名の前に追加するのを間違えてしまい、壊れてしまいました。これは私のために働きました:{ "verbose": true, "watch": ["server/**/*.ts"], "ext": "ts js json", "ignore": ["server/**/*.spec.ts"], "exec": "ts-node index.ts" }
。コマンドライン:nodemon --watch server/**/*.ts --ignore server/**/*.spec.ts --verbose --exec ts-node index.ts
ext
、設定ファイルにもを設定する必要があるので、tsの変更を検索するように言っておきます。:このような私の設定ファイルを見て{ "watch": ["src/**/*.ts"], "ignore": ["src/**/*.spec.ts"], "ext": "ts js json", "_exec": "node dist/startup.js", "exec": "ts-node src/startup.ts" }
私はダンプnodemon
しts-node
、より良い代替案を支持しました、ts-node-dev
https://github.com/whitecolor/ts-node-dev
とにかく走れ ts-node-dev src/index.ts
tsc --watch
ます。
nodemon
持ちますts-node
。ありがとうございました!
"start": "ts-node-dev src"
ます。babel、nodemon、またはそれに付属する構成は必要ありません。すべてはあなたのために処理されます。
npmスクリプトを使用したHeberLZの回答の代替案を次に示します。
私package.json
:
"scripts": {
"watch": "nodemon -e ts -w ./src -x npm run watch:serve",
"watch:serve": "ts-node --inspect src/index.ts"
},
-e
フラグは検索する拡張を設定し、-w
監視ディレクトリを設定します、-x
スクリプトを実行します。--inspect
でwatch:serve
スクリプトが実際のNode.jsフラグであり、それだけで、プロトコルのデバッグを可能にします。
-e ts -w ./src
私のためにトリックを行いました-これはloopback4 CLIで生成されたプロジェクトで動作しました
特にこの問題のために、tsc-watch
ライブラリを作成しました。あなたはそれをnpmで見つけることができます。
明らかな使用例は次のとおりです。
tsc-watch server.ts --outDir ./dist --onSuccess "node ./dist/server.js"
"[...] similar to nodemon but for TypeCcript."
:)
これは私にとってはうまくいきます:
nodemon src/index.ts
どうやらこのプルリクエスト以来のおかげで:https://github.com/remy/nodemon/pull/1552
ts-node
インストールしていません。
node_modules/
か?私にとってそれがなければ失敗します。
ts-node
にインストールする必要があります。このコマンドを実行せずに実行ts-node
すると、failed to start process, "ts-node" exec not found
エラーが発生します。あなたはおそらくこれを残りのアーティファクトとして持っていましたnode_modules
。そうは言っても、追加の構成を必要としないため、このソリューションははるかに優れています。
あなたはts-node-devを使うことができます
必要なファイルのいずれかが変更されると(標準のnode-devとして)、ターゲットノードプロセスを再起動しますが、再起動間でTypescriptコンパイルプロセスを共有します。
インストール
yarn add ts-node-dev --dev
そしてあなたのpackage.jsonはこのようになる可能性があります
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"tsc": "tsc",
"dev": "ts-node-dev --respawn --transpileOnly ./src/index.ts",
"prod": "tsc && node ./build/index.js"
}
私はした
"start": "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec ts-node src/index.ts"
そして糸の開始.. ts-nodeは 'ts-node'とは異なります
私はts-nodeを使用せず、常にdistフォルダーから実行したいと思います。
これを行うには、package.jsonをデフォルトの構成でセットアップします。
....
"main": "dist/server.js",
"scripts": {
"build": "tsc",
"prestart": "npm run build",
"start": "node .",
"dev": "nodemon"
},
....
次に、nodemon.json構成ファイルを追加します。
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "npm restart"
}
ここでは、「exec」を使用します。「npm restart」
使用しているため、すべてのtsファイルがjsファイルに再コンパイルされ、サーバーが再起動されます。
開発環境で実行するには、
npm run dev
この設定を使用すると、常に分散ファイルから実行され、ts-nodeは必要ありません。
これをpackage.jsonファイルに追加してください
scripts {
"dev": "nodemon --watch '**/*.ts' --exec 'ts-node' index.ts"
}
これを機能させるには、ts-nodeをdev-dependencyとしてインストールする必要もあります
yarn add ts-node -D
yarn dev
開発サーバーを起動するために実行します
index.ts
急行インスタンスで、どのように私はそれと再起動を殺すことができる