2017-03-22 11 views
0

背景はWebPACKの構成で

を構築し、あなたは[name]-[hash].jsのように放出されたファイルの命名規則を指定することができます。私はこれをhtml-webpack-pluginと組み合わせて使用​​して、配備時に正しいアセットを含めるためにRailsアプリで使用するために.html.erbのパーシャルを生成します。すべてのWebpackビルドでは、ファイル名に独自のフィンガープリントが作成されます。アプリケーションを複数のサーバーに拡張する場合を除き、Webpackはビルドプロセスの一部です(サーバーごとに新しいビルド)。 Railsは、あらかじめコンパイルされたアセットのフィンガープリンティングを同様に行います。

github.css 
** becomes ** 
github-448c90f2e2f181cd43b943786ee6f.css 

問題

アプリは(Elastic Beanstalkで使用)、ロードバランサの背後にある複数のサーバーにスケールされているので、それぞれの展開上、正確に同じでなければなりません構築します。 Webpackはビルドごとにユニークなハッシュを生成するため、生成されたアセットが同期していないため、ページのロード時に404を取得します。

質問

は、誰もが複数のビルドで同じハッシュを取得する方法を考え出していますか?おそらくgit commit hashに基づいていますか?それは私が思っていることですが、多くの検索は結果をもたらしませんでした。それを自分で構築することはできません。

+0

https://www.npmjs.com/package/webpack-stable-module-id-and-hash –

答えて

0

ハッシュは決定的であり、含まれるファイルの内容が同じである限り、ハッシュも同様になります。これには依存関係も含まれているため、まったく同じ依存関係を持つことが重要です。

Yarnは、すべてのインストール時にインストールされた依存関係が同一であることを保証するためにファイルを使用します。これにより、すべてのマシンで常に同じビルドを行うことが非常に簡単になります。 npmを使用すると、npm shrinkwrapを使用して依存関係のバージョンをロックすることができますが、これは通常、管理が面倒です(Yarnが作成された理由とロックファイルを使用する理由の1つ)。

また、公式ドキュメントのGuides - Cachingもお読みください。

+0

ご意見ありがとうございました。私は実際には非常に異なるものを観察しています。 webpack buildコマンドを2回続けて実行すると、毎回新しいハッシュがすべて生成されます。私は現在、依存関係を管理するためにyarn.lockファイルを使用しています。これはローカルでも発生します。偶然、webpackがそのハッシュ作成において決定論的であることをあなたがどこで知ったのか知っていますか? –

+0

ビルドは確定的ですが、ローダー/プラグインが適用された後の最終結果からハッシュが生成されます([1155コメント](https://github.com/webpack/webpack/issues/1155#issuecomment-255381269) )。 [#3508](https://github.com/webpack/webpack/issues/3508)のように、ファイルに無関係な状態を使用するプラグインまたはローダーがある可能性があります。しかし、同じマシン上で連続して2回ビルドを実行すると、常に同じハッシュが生成されます。その他の関連問題[#950](https://github.com/webpack/webpack/issues/950)と[#1479](https://github.com/webpack/webpack/issues/1479)。 –

関連する問題