初めてWebpackを試しています。私はしばらくの間BrowserifyでGulpを使用していて、かなり快適です。この時点で、私はいくつかのWebpackプラグインをテストしています。つまり、compression-webpack-pluginです。私はこれまで圧縮を使用したことがないので、初心者の間違いを犯した場合は我慢してください。
以下は私のwebpack.config.jsです。その結果、main.js、main.js.gz、main.css、index.htmlが取得されます。 main.jsはindex.htmlに挿入されますが、ブラウザーでindex.htmlを開くと、圧縮されたmain.js.gzではなく、圧縮されていないmain.jsが提供されます。スクリプトタグに.gz拡張子を含める必要がなく、html-webpack-pluginに含まれていないことを読んだので、正常に機能していると思いましたが、圧縮されていないmain.jsが提供されています。圧縮されたものではなく。
var path = require('path');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var CompressionPlugin = require('compression-webpack-plugin');
module.exports = {
entry: './app/scripts/main.js',
output: {
path: path.join(__dirname, 'public'),
filename: '[name].js',
chunkFilename: '[id].js'
},
module: {
loaders: [
{test: /\.scss$/, exclude: /node_modules/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader!sass-loader')},
{test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader'}
]
},
plugins: [
new HtmlWebpackPlugin({
hash: true,
template: 'app/index.html',
inject: 'body'
}),
new ExtractTextPlugin('[name].css'),
new CompressionPlugin()
]
};
script
-タグにmain.js.gz
が含まれている場合にmain.js
の代わりにmain.js
をロードするには、Webサーバー(Apache、nginxなど)を構成する必要があります。
設定は、ブラウザがgzipを受け入れるかどうかに応じて、.js.gz
または.js
をロードする必要があることに注意してください。 WebサーバーはHTTPリクエストヘッダーでそれをチェックできますAccept-Encoding: gzip, deflate
ブラウザのdevtoolsでは、どのような場合でもmain.jsが表示されます。
nginx gzip static module を使用すると、条件付きでgz
統計を簡単に提供できます。サーバーは、app.js.gz
ファイルかどうかをチェックします。要求された/statics/app.js
が存在し、透過的に提供されます。アプリケーションを変更したり、Accept-Encoding
を検出したりする必要はありません-すべてがnginxモジュールによって処理されます。設定スニペットは次のとおりです。
location /statics/ {
gzip_static on;
}
私はこのスレッドに少し遅れていますが、2cを追加すると思いました。 webpackを使用してgzファイルを生成しましたが、Accept-Encoding
が正しく設定されているにもかかわらず、Apacheは非圧縮ファイルを提供し続けました(または存在しない場合はエラーが発生しました)。 AddEncoding x-gzip .gz .tgz
のコメントを外して、httpdをリロードする必要がありました。記録のために、AddType application/x-gzip .gz .tgz
はすでに設定されており、Apache2.4.6をChrome 62で使用しています。conf/ httpdを確認するように促してくれた上記のDmitryに感謝します。 confファイル。