問題タブ [grunt-concurrent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - grunt watch タスクの分割
だから私は5つgrunt-contrib-watch
のタスクがあります:
- sass ファイルをコンパイルするための sass
- testConcat からテストを連結する
- implementationConcat は、テスト用に実装ファイルを連結します
- ハンドルバー テンプレートをプリコンパイルするためのテンプレート
- karma は karma のテスト ランを開始します
それらすべてを監視することはわかってgrunt watch
いますが、実際にはそれらを 2 つのグループに分割する必要があります。最初の 4 つはデザイナーが静的サーバーを実行して sass 作業を行っているとき用で、最後の 2 つは js 作業を行っているとき用です.
私はgrunt-concurrent
それらを分割して同時に実行するために使用していますが、それは機能しますが、ちょっとしたハックのようです。何か不足していますか?
gruntjs - Grunt: サーバー側の `.coffee` ファイルがコンパイルされたときに `grunt-nodemon` が再起動した後に `contrib-watch` livereload イベントを発生させる
私は Grunt.js といくつかのプラグイン、特にgrunt-contrib-watch
,grunt-nodemon
とgrunt-contrib-coffee
. 私はこれを 2 日間理解しようとしてきましたが、この時点で Grunt に関する私の知識が十分であるとは思いません。
私が経験している問題は、サーバー側の.coffee
ファイルをコンパイルしてから nodemon にサーバーを再起動させ、その後 livereload 作業のみを行うことです。現在、Livereload は、サーバー側のcoffee
ファイル以外のすべてに対して意図したとおりに機能します。contrib-watch
変更を検出し、実行coffee
してlivereload
イベントを発生させますが、その後nodemon
再起動します。
nodemon
ページがリロードされる前に再起動して、画面に表示される内容がサーバー側のコードで行われている最新のものになるようにする方法はありますか?
別の端末タブで実行するオプションが提示されましたnodemon
が、私は Windows を使用しており、この目的のために 1 つの端末を実行し続けたいと思っていgrunt-concurrent
ます。
これが私の Gruntfile です。これはかなり初期の段階です (私はこれをすべて理解しようとしています)。JavaScript にコンパイルすることをご希望の場合は、コメントを残してリクエストしていただければ幸いです。
gruntjs - Grunt - grunt-newer を使用して変更されたファイルのみをリントする
Concurrent を使用して Nodemon と Watch/Livereload の両方を実行する Grunt タスクを実行しています。デフォルトのロードでは、Concurrent をリントして起動します。また、変更時に個々のファイルをリントするウォッチを設定したいと思います。現在、1 つのファイルが変更されると、すべてのファイルがリントされます。
私は StackOverflow で同様の質問を調べ、潜在的な解決策として grunt-newer を使用することにしました。ただし、以下の私の実装では、「新しい」プレフィックスは何もしていないようです。変更されたファイルのみがリントされるようにするにはどうすればよいですか?
node.js - 同時ファイル変更後に一度 grunt-nodemon を実行する
これは私の Gruntfile です。nodemon を同時に実行してアプリケーションを実行し、coffeescript の変更を監視します。
Coffeescript は src ファイルを受け取り、それらを JS ファイルに変換します (現在、main.coffee、Person.coffee、および Car.coffee の 3 つ)。
これらのファイルが変更されるたびに Nodemon を再起動し、最後に保存された変更で Nodemon を実行したいと考えています。
ここに問題があります:たった 1 つの coffee ファイルが変更された場合、coffee を実行するとすべての coffee ファイルが再コンパイルされ、3 つの JS ファイルが生成され、nodemon が 3 回再起動されます。ネットリクエストを使用するアプリケーションで作業しているため、これは望ましくありません。制御不能になることは望ましくありません。
nodemon を 1 回だけ再起動することはできますか?
すべての JS ファイルを連結することを考えましたが、それでは JS ファイルのモジュール性が台無しになります。
ファイルを 1 つずつ「監視」することも考えましたが、50 ファイルに達すると面倒になる可能性があります。
どうすればこの問題を解決できますか?
javascript - Grunt 同時実行タスクは、他のタスクからのロギングを上書きします
タスク中に端末に書き込む特定の単調なタスクが、同時に実行されると互いに上書きするように見えるという興味深い問題に遭遇しました。例えば:
単体テスト用と e2e テスト用の 2 つのタスクを同時に実行しようとしています。どちらも私が取り組んでいるファイルを自動監視する必要があります。そのため、Gruntfile.js に次のものがあります (これらは単なる興味深い部分です:
Gruntfile.js:
コマンド ラインから 'grunt Continuity' を実行すると、予想どおり、2 つのブラウザー ウィンドウがポップアップ表示されます。多くの場合、最初の実行時に、見たい出力を端末から取得します。
$grunt Continuous の最初の実行時:
ただし、監視対象のファイルを変更 (および保存) すると、奇妙な結果が表示され始めます。同じファイルを何度も保存すると、並行タスクから異なる出力が得られることが多いことに注意してください。
同じファイルを何度も保存した後:
ここでの問題は、ログが実際に端末にどのように書き込まれているかに起因すると思います...つまり、テストが実行されるたびに、うなり声タスクが端末の最後の行を消去し、現在の進行状況に置き換えます。この動作を制御する必要があるか、問題を回避するために私の単調なタスクを別の方法で設定する必要があるという提案はありますか?
乾杯!
javascript - grunt-concurrent と処理 SIGINT
grunt-concurrent を使用して SIGINT を処理しようとしたときに見られる動作を理解するのに苦労しています。誰かがそれに光を当ててくれることを願っています。基本的に、宣言内で SIGINT ハンドラーを使用すると、並行タスクの1 つfunction(grunt) { }
だけが SIGINT を参照するのはなぜですか?
簡単なセットアップ: grunt-concurrent を使用して、watch タスクと nodemon タスクを起動しています。Gruntfile.js
私のファイルの正確な同時スタンザは次のとおりです。
Ctrl+を押したときにC、監視タスクの一部としてコピーされるいくつかのファイルをクリーンアップできるように、SIGINT を監視したかったのです。関数宣言Gruntfile.js
の外側のmy の最後に次を追加することから始めました。module.exports = function(grunt) { ... }
そこに含まれているときにCtrl+Cを押すと、3 回実行されます。実行したメインの grunt タスク ( dev
) に対して 1 回と、grunt-concurrent で実行した 2 つのタスク (watch
およびnodemon:dev
) のそれぞれに対して 1 回です。それは明らかに私が意図したものではありません。
function(grunt) { }
メソッド内で SIGINT ハンドラーを移動すると、Ctrl+を押すCと、タスクに対して 1 回だけ実行されnodemon:dev
ます。私が理解できないのは、タスクに対しても実行されていないwatch
理由です(そして、両方を起動するマスター同時実行タスクdev
に対しても!)、それは私を殺しています...ほとんどの場合、私はしたくないからです理解できず、このアプリが最終的に使用されるすべての異なるマシンで同じになるとは限らないときに、この動作に依存すること。
それで...考え?ここで何が欠けていますか?ありがとう!
javascript - Jasmine 同時 Grunt タスクを作成できない
すべてが機能する一連のタスクをセットアップしましたが、テストタスクの構成に問題があります。Jasmine-node を起動して実行しており、コマンド ラインからテストを実行できますが、単調なタスクが機能していないようです。
GruntFile.js:
aliases.yaml: (テストタスクのみを表示するために短縮されています)
test.js
フォルダ構造:
- うなり声
- 並行.js
- test.js
- 等
- GruntFile.js
- テスト
- SMS
- textReceiver-spec.js
- SMS
タスクはロードされますが、そこに座っているだけで、何も起こりません。それ以上の情報はなく、エラーさえありません。テストファイルが見つからないだけだと思いますか?しかし、ファイルに直接リンクしようとしましたが、同じ結果になりました。
結果:
ben_cripps$ うなり声テスト
"concurrent:test" (同時) タスクの実行
しかし、それだけです
gruntjs - 失敗したタスクでのグラント同時ループ
Grunt-Concurrent には興味深い問題があります。Uglify や Karma などの登録済みタスクがエラーなしで実行される場合、すべて問題ありません。しかし、Uglification または Karma テストが失敗した場合、Grunt-Concurrent はエラーが修正されるまで継続的にループします。これは Ugliify では厄介でしたが、Karma 単体テストでは、バグが修正されるまでループさせるのは非常に困難です。
これを解決する方法のアイデアはありますか?
正確なセットアップの例を提供することはできません。
単体テストがすべて合格するまで、このメッセージで実行し続けます。
その後、何度も何度も実行します。