From c7b922686a4eebb0efe0a614b8e90d3b8364333a Mon Sep 17 00:00:00 2001 From: Paulo Rezende Date: Mon, 2 Jul 2018 21:40:48 -0300 Subject: [PATCH 1/4] Add support to cache files on Webpack configs --- webpack.common.js | 2 +- webpack.prod.js | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/webpack.common.js b/webpack.common.js index 80a3a59..5d96fdc 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -8,7 +8,7 @@ module.exports = { vendor: './statik/scripts/vendor.js' }, output: { - filename: '[name].bundle.js', + filename: '[name].[chunkhash].bundle.js', path: path.resolve('dist') }, module: { diff --git a/webpack.prod.js b/webpack.prod.js index dd12418..9d6dacf 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -55,9 +55,17 @@ module.exports = merge(common, { ] }, optimization: { + runtimeChunk: 'single', splitChunks: { chunks: 'all', - name: true + name: true, + cacheGroups: { + vendor: { + test: /[\\/]node_modules[\\/]/, + name: 'vendors', + chunks: 'all' + } + } }, minimizer: [ new OptimizeCSSAssetsPlugin({ @@ -73,6 +81,7 @@ module.exports = merge(common, { new UglifyJsWebpackPlugin({ sourceMap: true }), + new webpack.HashedModuleIdsPlugin(), new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify('production') }) From d52dafc7461ff4e491b9116aeb8822cb9817da83 Mon Sep 17 00:00:00 2001 From: Paulo Rezende Date: Fri, 6 Jul 2018 19:40:33 -0300 Subject: [PATCH 2/4] Move webpack config files to a folder --- webpack.common.js => webpack/webpack.common.js | 2 +- webpack.dev.js => webpack/webpack.dev.js | 2 +- webpack.prod.js => webpack/webpack.prod.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename webpack.common.js => webpack/webpack.common.js (93%) rename webpack.dev.js => webpack/webpack.dev.js (90%) rename webpack.prod.js => webpack/webpack.prod.js (97%) diff --git a/webpack.common.js b/webpack/webpack.common.js similarity index 93% rename from webpack.common.js rename to webpack/webpack.common.js index 5d96fdc..1bcc16b 100644 --- a/webpack.common.js +++ b/webpack/webpack.common.js @@ -39,7 +39,7 @@ module.exports = { ] }, plugins: [ - new CleanWebpackPlugin(['dist']), + new CleanWebpackPlugin(['dist'], { root: path.resolve() }), new HtmlWebpackPlugin({ template: './statik/index.html' }) diff --git a/webpack.dev.js b/webpack/webpack.dev.js similarity index 90% rename from webpack.dev.js rename to webpack/webpack.dev.js index 8e4220a..3d7fb18 100644 --- a/webpack.dev.js +++ b/webpack/webpack.dev.js @@ -18,7 +18,7 @@ module.exports = merge(common, { }, { test: /\.(gif|jpg|png|svg|ico)$/, - include: path.resolve(__dirname, 'statik/images'), + include: path.resolve('statik', 'images'), use: ['file-loader'] } ] diff --git a/webpack.prod.js b/webpack/webpack.prod.js similarity index 97% rename from webpack.prod.js rename to webpack/webpack.prod.js index 9d6dacf..6335696 100644 --- a/webpack.prod.js +++ b/webpack/webpack.prod.js @@ -40,7 +40,7 @@ module.exports = merge(common, { }, { test: /\.(gif|jpg|png|svg|ico)$/, - include: path.resolve(__dirname, 'statik/images'), + include: path.resolve('statik', 'images'), use: [ { loader: 'file-loader', From 182338900720ddd99af7f8ac7e4180be874f40fe Mon Sep 17 00:00:00 2001 From: Paulo Rezende Date: Fri, 6 Jul 2018 19:46:06 -0300 Subject: [PATCH 3/4] Change the path to webpack config files --- webpack.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webpack.config.js b/webpack.config.js index 50ea949..e073a1f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,5 +1,5 @@ module.exports = (env) => { - const config = require(`./webpack.${env.env}`); + const config = require(`./webpack/webpack.${env.env}`); return config; }; From a1a16a7c0f2806c0de7ecba75d30d28cf1b96cbc Mon Sep 17 00:00:00 2001 From: Paulo Rezende Date: Fri, 6 Jul 2018 19:59:49 -0300 Subject: [PATCH 4/4] Change env.env to env.mode --- package.json | 4 ++-- webpack.config.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 85f00c4..32a478a 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,9 @@ "src" ], "scripts": { - "build": "webpack --env.env=prod", + "build": "webpack --env.mode=prod", "lint": "eslint statik/**/*.js", - "start": "webpack-dev-server --env.env=dev" + "start": "webpack-dev-server --env.mode=dev" }, "repository": { "type": "git", diff --git a/webpack.config.js b/webpack.config.js index e073a1f..20a6a9b 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,5 +1,5 @@ module.exports = (env) => { - const config = require(`./webpack/webpack.${env.env}`); + const config = require(`./webpack/webpack.${env.mode}`); return config; };