2015-11-27 16 views
7

私のWebプロジェクトは主にPythonですが、Webpackを使用してJavaScriptをコンパイルして圧縮しています。変更された場合のみWebpackコンパイル

コンパイルには少し時間がかかりますが、これは期待しても受け入れ可能です。しかし、テストをローカルで実行すると、最新のJavascriptがあることを確認するために見つけた唯一の方法は、コンパイルすることです。

これは大きな問題になります。ほとんどの場合、私が梱包しているコードは変更されていません。なぜなら、それは私が取り組んでいるものではないからです。テスト実行の間、webpackの出力は変化しません。私はまだそれが変更されていないことを保証することはできませんので、梱包のコストを負担する必要があります。

最後のパックが作成されてからソースファイルが変更されているかどうかを確認し、既に存在するパックが同じソースファイルに含まれていない場合にのみパックする方法はありますか?

+0

なぜテスト中のコードが変更されていないのですか?あなたはテストを単なる孤立して書いていますか(テストコードだけが変更されます)?失敗したテストを書くときに何をするのですか?テストされているJavaScriptテストをリファクタリングする必要がないので、再コンパイルする必要はありませんか? –

+0

ほとんどのコードはDjango/Python Webプロジェクトです。これが私がテストしているコードです。パックに_exist_を必要とするテストケースがいくつかありますが、Javascriptが変更されていないときに_recompiled_する必要はありません。 –

+0

私は参照してください。 Djangoテストで作業するときに、 '' webpack - watch ''にアプローチする方法があります。これはJSプロジェクトの最初のコンパイルを引き起こし、ソースjsが変更されたときにのみ、webpackはそれを再度コンパイルします。 –

答えて

2

簡単な組み込み方法はありませんが、誰かがプラグインを書きました:only-if-changed-webpack-plugin。これにより、入力ファイルとそのすべての依存関係の時刻がチェックされ、変更された場合にのみ再構築されます。

[cross-env NODE_ENV='production' && webpack -p --progress] <-- your build command in brackets here 
out: ./build/*.js  <-- path where your webpack will put a new file 
src/**/* <-- all sources that will be monitored 

実行build-if-changedのかpackage.jsonに追加:

0
npm install -g build-if-changed  

プロジェクトのルートにファイルbuildconfigを作成します。完璧に動作します! Detailed blog post

関連する問題