web-dev-qa-db-ja.com

複数の「webpack:バンドルが終了するまで待つ」を出力するKarma webpack

最近のwebpack 1.14.0/karma 1.4.0/karma-webpack 2.2.0のリリース後、karmaがwebpackビルドを開始すると、これらのメッセージがたくさん表示されるようになりました。

webpack: wait until bundle finished:

ときどき6〜8個も表示され、ビルドが長くなるようです。たとえば、これ:

Hash: 255562a2a96fffe34fae
Version: webpack 1.14.0
Time: 408ms
webpack: bundle is now VALID.
webpack: bundle is now INVALID.
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
ts-loader: Using [email protected] and C:\git\project\tsconfig.json

これまでのところ、ビルドは停止していませんが、少なくとも一時的にでも、何かがロックされているようです。これを見た人はいますか?私の終わりに何かある場合はこれをクリーンアップしたいのですが、私の構成ファイルは変更されていませんが、これは最近、karma/webpackファミリーの製品からの最近の大量のリリースで表示されています過去3週間。

私の質問は:

  1. このメッセージはどういう意味ですか?
  2. それらを作成する問題を修正するために何ができますか?
20
Kim Gentes

karma-webpackは、すべてのスペックファイルを個別のエントリポイントとして扱い、それぞれに個別のwebpackバンドルを生成します。したがって、コンソールログは問題なく、問題を示していません。

複数を削除したい場合はwebpack: wait until bundle finished:出力により、karma設定でwebpack-dev-middleware情報のロギングを無効にできます。

...

webpackMiddleware: {
  noInfo: true
},

...

webpack-dev-middleware パッケージのreadmeにあるwebpackMiddlewareセクションで使用可能なオプションの完全なリストについて詳しく読む。

17
dan

はい。これで動作し、解決策を見つけたようです。

私の場合、問題はKarma.confを含む複数のファイルにありました

このfiles設定をする前に

files: [
            src/**/*.spec.js'
        ],
        preprocessors: {
            'src/**/*.spec.js': ['webpack']
        },

カルマは含まれているすべてのファイルに対してwebpackコンパイルを起動するように見え、メモリを必要とします(テスト前にコンパイルされたファイルを保持するため)。したがって、メモリリークとリソース/時間の問題があります。

したがって、私はこの変更によってこの問題を解決しました:アプリルートに1つのtestEntryファイルを作成し(Karmaはそれでのみ機能し、このファイルに対してWebpackコンパイルを1回だけトリガーすることを期待しています)、それは私とまったく同じように機能します予想:)

files: [
            'src/__testsEntry__.spec.js'
        ],

このファイルでは、この構造を介してすべてのテストが必要でした

const req = require.context("./", true, /.+.spec.js/igm);
req.keys().forEach(function(key) {
    req(key);
});

これで問題が解決し、1つのファイルに対してWebpackコンパイルが1つだけになりました。プロジェクトテストプロセスとPCリソースの速度が向上しました。

それが役に立てば幸い。宜しくお願いします。

追伸すべてのテストスイートがkarma-spec-reporterを介して別のグループのように表示されたことを示すレポートのスクリーンショットがあります test report

ここでは、テストケースの1つのバンドルプロセスのデモを示します。 an one bundling process

更新2:このソリューションでは、レポートがtestEntryファイルの行番号をレポートに表示するため、テストが失敗した場合のデバッグに問題があります。 (元のファイルではありません)。したがって、他の可能な解決策が見つかるまで、テストスイートのいくつかの命名規則を使用して、理解を深めることができます-どのファイルでテストが失敗したか。

enter image description here

11
Velidan

webpack-dev-middlewareのオプション を確認した後、「[wdm」:バンドルが終了するまで待つ:noop」出力をkarma.conf.jsreporters セクションのすぐ下):

webpackMiddleware: {
  logLevel: 'error'
}

テスト済み:

  • カルマ3.1.1
  • karma-webpack 3.0.5
2