From aae98657860ae6aa743829781bdbfaa3edf6ebf8 Mon Sep 17 00:00:00 2001 From: Borewit Date: Mon, 25 Jun 2018 18:47:15 +0200 Subject: [PATCH] Add webpack script/config to analyze bundle size. Execute `npm run analyze` to open a size map of the production build in the browser. --- config/webpack.bundle-analyzer.js | 11 +++++++ package.json | 2 ++ yarn.lock | 49 +++++++++++++++++++++++++++++-- 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 config/webpack.bundle-analyzer.js diff --git a/config/webpack.bundle-analyzer.js b/config/webpack.bundle-analyzer.js new file mode 100644 index 00000000..c38c6fe8 --- /dev/null +++ b/config/webpack.bundle-analyzer.js @@ -0,0 +1,11 @@ +const BundleAnalyzerPlugin = require("webpack-bundle-analyzer") + .BundleAnalyzerPlugin; + +const merge = require("webpack-merge"); +const prod = require("./webpack.prod.js"); + +const config = merge(prod, { + plugins: [new BundleAnalyzerPlugin()] +}); + +module.exports = config; diff --git a/package.json b/package.json index ef0424df..2775377d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "lint": "eslint .", "build": "webpack --config=config/webpack.prod.js", "build-library": "webpack --config=config/webpack.library.js", + "analyze": "webpack --config=config/webpack.bundle-analyzer.js", "prepublishOnly": "npm run build-library", "serve": "http-server ./built", "start": "webpack-dev-server --config=config/webpack.dev.js", @@ -101,6 +102,7 @@ "uglifyjs-webpack-plugin": "^1.2.5", "url-loader": "^0.6.2", "webpack": "^3.6.0", + "webpack-bundle-analyzer": "^2.13.1", "webpack-dev-server": "^2.7.1", "webpack-merge": "^4.1.2", "webpack-pwa-manifest": "^3.6.2", diff --git a/yarn.lock b/yarn.lock index 84576c45..e9021485 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1027,6 +1027,14 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +bfj-node4@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/bfj-node4/-/bfj-node4-5.3.1.tgz#e23d8b27057f1d0214fc561142ad9db998f26830" + dependencies: + bluebird "^3.5.1" + check-types "^7.3.0" + tryer "^1.0.0" + big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" @@ -1436,6 +1444,10 @@ chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" +check-types@^7.3.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" + cheerio@^1.0.0-rc.2: version "1.0.0-rc.2" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" @@ -1643,6 +1655,10 @@ commander@^2.11.0: version "2.14.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" +commander@^2.13.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -2356,6 +2372,10 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" +ejs@^2.5.7: + version "2.6.1" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0" + electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30: version "1.3.33" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.33.tgz#bf00703d62a7c65238136578c352d6c5c042a545" @@ -3023,6 +3043,10 @@ fileset@^2.0.2: glob "^7.0.3" minimatch "^3.0.3" +filesize@^3.5.11: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + fill-range@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" @@ -3363,7 +3387,7 @@ gzip-size-cli@^2.0.0: meow "^3.7.0" pretty-bytes "^4.0.2" -gzip-size@^4.0.0: +gzip-size@^4.0.0, gzip-size@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c" dependencies: @@ -5485,7 +5509,7 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -opener@~1.4.0: +opener@^1.4.3, opener@~1.4.0: version "1.4.3" resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" @@ -7614,6 +7638,10 @@ trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" +tryer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -7946,6 +7974,23 @@ webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" +webpack-bundle-analyzer@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz#07d2176c6e86c3cdce4c23e56fae2a7b6b4ad526" + dependencies: + acorn "^5.3.0" + bfj-node4 "^5.2.0" + chalk "^2.3.0" + commander "^2.13.0" + ejs "^2.5.7" + express "^4.16.2" + filesize "^3.5.11" + gzip-size "^4.1.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + opener "^1.4.3" + ws "^4.0.0" + webpack-dev-middleware@1.12.2: version "1.12.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"