私はFullcalendar & Moment.jsを使用してJSONデータを使用して簡単なインタラクティブなカレンダーを作成しています。 Webpack 2を使用してJSを1つのファイルにバンドルします。以下は私のwebpack.config.js
ファイルの簡略化されたバージョンです(これ以上のものはすべてロードされています)。Webpack - FullCalendarによる巨大なbundle.jsファイル
var webpack = require('webpack');
var bower_dir = __dirname + '/library/bower_components';
var config = {
resolve: {
alias: {
jquery: bower_dir + '/jquery/src/jquery.js',
vue: bower_dir + '/vue/dist/vue.js',
fullCalendar: bower_dir + '/fullcalendar/dist/fullcalendar.js',
moment: bower_dir + '/moment/moment.js',
}
},
entry: {
app: './library/js/main.js'
},
output: {
path: __dirname + '/dist/library/js',
filename: "bundle.js"
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
Vue: 'vue'
}),
],
module: {
noParse: /moment.js/
}
};
module.exports = config;
私のバンドルファイルには、これらの両方が含まれた後にファイルサイズが大幅に増加していることに気付きました。私はMoment hereで同様の問題を読んで、私の非圧縮バンドルサイズを2.13MBから1.83MBに減らした変更を実装しました。
webpack --json
からWebpack Visualiserまでの出力を実行すると、フルカレンダーはファイルサイズの膨大な割合を占めていることに気付きました。他のどのライブラリよりも多くのものがあります(23.7%、次に高いjQueryは15.8%、その後Vue.JSは15.4%)。
私はこのファイルサイズを減らす方法を知っている人がいらっしゃいますか?私は現在、webpack -p
を稼動させて、656kBまでのサイズを減らしていますが、まだまだ多くのようです。
コード分割を使用していません... –
サイズを縮小する唯一の本当の方法は、必要な機能だけを含むカレンダーモジュールをロールアウトすることです。またはフルカレンダーに指定するオプションがある場合 –
[ガイドセクション](https://webpack.js.org/guides/code-splitting-libraries/)でコード分割を参照してください.... –