2016-09-06 5 views
1

NodemonとBabelを使用しています。6. Nodemonをグローバルにアンインストールし、最新のバージョンをインストールしました。私は私のNPMスクリプトの次の行の両方を試してみましたバーベル使用時にNodemonが複数回保存される

"watch-new": "nodemon src/index.js --exec babel-node" 

そして

"watch-new": "nodemon src/index.js --exec babel -w src/ -d build/ --source-maps" 

をバベルを実行しているの変化が類似した/同じnodemon関連の混乱アップにつながるように見えます。

私は、単にconsole.log("Hello, World!");を含むファイルから始めて、console.log("Test");を含むそのステートメントの後の行を追加しました。今すぐ2行のファイルを保存すると(1回のみ)、次のコンソール出力が行われます。 nodemonに、次のいずれかを追加する

は私のプログラムは、「2.5 --delay」または「-L」/一度のみ再起動して「--legacyWatch」

なぜそれが何度も実行してリロードされるのですか?

enter image description here

答えて

0

私はnodemonの組み合わせ、babel、および他のウォッチャー型プログラムがしばしば奇妙な相互作用することができることを発見しました。このタイプの「ダブルラン」の結果はかなり一般的です。 のように設定するとうまく動作しますが、それはですが、壊れやすい可能性があります。

しかし、私はあなたのコマンドライン引数の選択を理解していません。私は彼らが間違っているとは言いませんが、私がインストールしたbabelのバージョンや、私が使っているドキュメントには対応していません。 Babelを実行するための推奨される方法には注目すべき変更がありました。インターネット上のすべてのドキュメントが最新であり、最新の方法で最新のものではありません。

あなたの設定で動作していないものをデバッグするのではなく、である設定をしてください。

まず私はバベルとそのプリセットをインストール:

npm install --save-dev babel-cli babel-preset-es2015 

その後package.jsonにおけるNPMスクリプト:

"watch-new": "nodemon src --exec babel --presets es2015 -w src/ --out-dir build/ --source-maps" 

(あなたが他のプリセットを使用することができます私は大きなもの、ES2015を使用しています。)

ソースファイルに対してはnodemonを呼び出します。ソースファイルではなく、babelをネストしないようにします。 srcの下にbuild;個々の.jsファイルがbuildで、srcサブディレクトリではないとします。私も正しいと理解している--out-dirオプションを使用します(-dではありません)。

は最後に、それを実行します。

npm run watch-new 

これらのパッケージと、そのスクリプトの呼び出しは、私のために再実行ワンス当たりの変化の挙動を正しく与えます。nodebuild/の下に保存する代わりに、変換直後にコードを実行する場合は、--exec babel--exec babel-nodeに変更し、--out-dirの指定を削除します。

最後に、あなたの質問にはECMAscript-6のタグが付けられています。以前はes6と呼ばれていたものが、より正式にes2015と呼ばれています。 (this primer on the new version namesを参照してください)新しいes2015の用語で検索すると、正しい最新のドキュメントを入手する可能性が高くなります。

+0

ありがとうございます。あなたの新しいスクリプトに合わせてnpmスクリプトを変更しました。私はこの変更を一度行った後にこの出力を得ます。強調表示された行は、コードを変更して一度saveを押す前の位置です。 http://imgur.com/a/glcs1 – Connorelsea

+0

「-w src /」を削除しても、それは永遠に実行されます。ただの観察。 – Connorelsea

+0

次のいずれかをnodemonに追加すると、プログラムは "--delay 2.5"または "-L"/"--legacyWatch" – Connorelsea

関連する問題