From fdc07a319db3ec2c2eede708bd0d3571e93e7de5 Mon Sep 17 00:00:00 2001 From: NicoPennec Date: Thu, 25 Jan 2018 09:01:48 +0100 Subject: [PATCH 1/2] perf: chunks size limit --- lib/builder/webpack/client.config.js | 11 +++++++++++ lib/common/options.js | 1 + 2 files changed, 12 insertions(+) diff --git a/lib/builder/webpack/client.config.js b/lib/builder/webpack/client.config.js index 6bb31233c0..d045553741 100644 --- a/lib/builder/webpack/client.config.js +++ b/lib/builder/webpack/client.config.js @@ -166,6 +166,17 @@ module.exports = function webpackClientConfig() { config.plugins.push(new webpack.optimize.ModuleConcatenationPlugin()) } + // Chunks size limit + // https://webpack.js.org/plugins/aggressive-splitting-plugin/ + if (this.options.build.maxChunkSize) { + config.plugins.push( + new webpack.optimize.AggressiveSplittingPlugin({ + minSize: this.options.build.maxChunkSize, + maxSize: this.options.build.maxChunkSize + }) + ) + } + // https://webpack.js.org/plugins/hashed-module-ids-plugin config.plugins.push(new webpack.HashedModuleIdsPlugin()) diff --git a/lib/common/options.js b/lib/common/options.js index e2d06d56cf..32e84423bd 100755 --- a/lib/common/options.js +++ b/lib/common/options.js @@ -184,6 +184,7 @@ Options.defaults = { profile: process.argv.includes('--profile'), dll: false, scopeHoisting: false, + maxChunkSize: false, extractCSS: false, cssSourceMap: undefined, ssr: undefined, From ae00499ec5e90893eab750096e64c0562a0df946 Mon Sep 17 00:00:00 2001 From: Nicolas Pennec Date: Thu, 25 Jan 2018 09:51:06 +0100 Subject: [PATCH 2/2] fix: avoid warning of too big vendor --- examples/vue-chartjs/nuxt.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/vue-chartjs/nuxt.config.js b/examples/vue-chartjs/nuxt.config.js index e6b67f1882..943b5aebf7 100644 --- a/examples/vue-chartjs/nuxt.config.js +++ b/examples/vue-chartjs/nuxt.config.js @@ -7,7 +7,8 @@ module.exports = { ] }, build: { - vendor: ['axios', 'moment', 'chart.js', 'vue-chartjs'] + vendor: ['axios', 'moment', 'chart.js', 'vue-chartjs'], + maxChunkSize: 300000 }, env: { githubToken: '42cdf9fd55abf41d24f34c0f8a4d9ada5f9e9b93'