浏览代码

build: add integration with webpack-bundle-analyzer

Build as follows to build (production) bundle size stats:

npx webpack -p --progress --analyze-bundle

Then open the report:

npx webpack-bundle-analyzer build/stats.json build/
master
Saúl Ibarra Corretgé 6 年前
父节点
当前提交
7deb2006c3
共有 3 个文件被更改,包括 176 次插入0 次删除
  1. 165
    0
      package-lock.json
  2. 1
    0
      package.json
  3. 10
    0
      webpack.config.js

+ 165
- 0
package-lock.json 查看文件

@@ -3444,6 +3444,12 @@
3444 3444
         "acorn": "^5.0.3"
3445 3445
       }
3446 3446
     },
3447
+    "acorn-walk": {
3448
+      "version": "6.2.0",
3449
+      "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz",
3450
+      "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
3451
+      "dev": true
3452
+    },
3447 3453
     "ajv": {
3448 3454
       "version": "5.5.2",
3449 3455
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
@@ -4413,6 +4419,26 @@
4413 4419
         "tweetnacl": "^0.14.3"
4414 4420
       }
4415 4421
     },
4422
+    "bfj": {
4423
+      "version": "6.1.2",
4424
+      "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz",
4425
+      "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==",
4426
+      "dev": true,
4427
+      "requires": {
4428
+        "bluebird": "^3.5.5",
4429
+        "check-types": "^8.0.3",
4430
+        "hoopy": "^0.1.4",
4431
+        "tryer": "^1.0.1"
4432
+      },
4433
+      "dependencies": {
4434
+        "bluebird": {
4435
+          "version": "3.5.5",
4436
+          "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
4437
+          "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
4438
+          "dev": true
4439
+        }
4440
+      }
4441
+    },
4416 4442
     "big-integer": {
4417 4443
       "version": "1.6.44",
4418 4444
       "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.44.tgz",
@@ -4835,6 +4861,12 @@
4835 4861
       "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
4836 4862
       "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
4837 4863
     },
4864
+    "check-types": {
4865
+      "version": "8.0.3",
4866
+      "resolved": "https://registry.npmjs.org/check-types/-/check-types-8.0.3.tgz",
4867
+      "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==",
4868
+      "dev": true
4869
+    },
4838 4870
     "chokidar": {
4839 4871
       "version": "2.0.4",
4840 4872
       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
@@ -6083,6 +6115,12 @@
6083 6115
         "moment": "^2.19.3"
6084 6116
       }
6085 6117
     },
6118
+    "duplexer": {
6119
+      "version": "0.1.1",
6120
+      "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
6121
+      "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
6122
+      "dev": true
6123
+    },
6086 6124
     "duplexify": {
6087 6125
       "version": "3.5.4",
6088 6126
       "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.4.tgz",
@@ -6142,6 +6180,12 @@
6142 6180
       "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
6143 6181
       "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
6144 6182
     },
6183
+    "ejs": {
6184
+      "version": "2.7.1",
6185
+      "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.1.tgz",
6186
+      "integrity": "sha512-kS/gEPzZs3Y1rRsbGX4UOSjtP/CeJP0CxSNZHYxGfVM/VgLcv0ZqM7C45YyTj2DI2g7+P9Dd24C+IMIg6D0nYQ==",
6187
+      "dev": true
6188
+    },
6145 6189
     "electron-to-chromium": {
6146 6190
       "version": "1.3.34",
6147 6191
       "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.34.tgz",
@@ -7220,6 +7264,12 @@
7220 7264
         "object-assign": "^4.0.1"
7221 7265
       }
7222 7266
     },
7267
+    "filesize": {
7268
+      "version": "3.6.1",
7269
+      "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
7270
+      "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
7271
+      "dev": true
7272
+    },
7223 7273
     "fill-range": {
7224 7274
       "version": "4.0.0",
7225 7275
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -8253,6 +8303,24 @@
8253 8303
       "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz",
8254 8304
       "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw=="
8255 8305
     },
8306
+    "gzip-size": {
8307
+      "version": "5.1.1",
8308
+      "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz",
8309
+      "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==",
8310
+      "dev": true,
8311
+      "requires": {
8312
+        "duplexer": "^0.1.1",
8313
+        "pify": "^4.0.1"
8314
+      },
8315
+      "dependencies": {
8316
+        "pify": {
8317
+          "version": "4.0.1",
8318
+          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
8319
+          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
8320
+          "dev": true
8321
+        }
8322
+      }
8323
+    },
8256 8324
     "handle-thing": {
8257 8325
       "version": "2.0.0",
8258 8326
       "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
@@ -8432,6 +8500,12 @@
8432 8500
         }
8433 8501
       }
8434 8502
     },
8503
+    "hoopy": {
8504
+      "version": "0.1.4",
8505
+      "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz",
8506
+      "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==",
8507
+      "dev": true
8508
+    },
8435 8509
     "hosted-git-info": {
8436 8510
       "version": "2.5.0",
8437 8511
       "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz",
@@ -12436,6 +12510,12 @@
12436 12510
         "is-wsl": "^1.1.0"
12437 12511
       }
12438 12512
     },
12513
+    "opener": {
12514
+      "version": "1.5.1",
12515
+      "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz",
12516
+      "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==",
12517
+      "dev": true
12518
+    },
12439 12519
     "optionator": {
12440 12520
       "version": "0.8.2",
12441 12521
       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
@@ -17109,6 +17189,12 @@
17109 17189
         "glob": "^7.1.2"
17110 17190
       }
17111 17191
     },
17192
+    "tryer": {
17193
+      "version": "1.0.1",
17194
+      "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
17195
+      "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==",
17196
+      "dev": true
17197
+    },
17112 17198
     "tslib": {
17113 17199
       "version": "1.9.3",
17114 17200
       "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
@@ -17945,6 +18031,85 @@
17945 18031
         }
17946 18032
       }
17947 18033
     },
18034
+    "webpack-bundle-analyzer": {
18035
+      "version": "3.4.1",
18036
+      "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.4.1.tgz",
18037
+      "integrity": "sha512-Bs8D/1zF+17lhqj2OYmzi7HEVYqEVxu7lCO9Ff8BwajenOU0vAwEoV8e4ICCPNZAcqR1PCR/7o2SkW+cnCmF0A==",
18038
+      "dev": true,
18039
+      "requires": {
18040
+        "acorn": "^6.0.7",
18041
+        "acorn-walk": "^6.1.1",
18042
+        "bfj": "^6.1.1",
18043
+        "chalk": "^2.4.1",
18044
+        "commander": "^2.18.0",
18045
+        "ejs": "^2.6.1",
18046
+        "express": "^4.16.3",
18047
+        "filesize": "^3.6.1",
18048
+        "gzip-size": "^5.0.0",
18049
+        "lodash": "^4.17.15",
18050
+        "mkdirp": "^0.5.1",
18051
+        "opener": "^1.5.1",
18052
+        "ws": "^6.0.0"
18053
+      },
18054
+      "dependencies": {
18055
+        "acorn": {
18056
+          "version": "6.3.0",
18057
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz",
18058
+          "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==",
18059
+          "dev": true
18060
+        },
18061
+        "ansi-styles": {
18062
+          "version": "3.2.1",
18063
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
18064
+          "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
18065
+          "dev": true,
18066
+          "requires": {
18067
+            "color-convert": "^1.9.0"
18068
+          }
18069
+        },
18070
+        "chalk": {
18071
+          "version": "2.4.2",
18072
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
18073
+          "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
18074
+          "dev": true,
18075
+          "requires": {
18076
+            "ansi-styles": "^3.2.1",
18077
+            "escape-string-regexp": "^1.0.5",
18078
+            "supports-color": "^5.3.0"
18079
+          }
18080
+        },
18081
+        "has-flag": {
18082
+          "version": "3.0.0",
18083
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
18084
+          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
18085
+          "dev": true
18086
+        },
18087
+        "lodash": {
18088
+          "version": "4.17.15",
18089
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
18090
+          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
18091
+          "dev": true
18092
+        },
18093
+        "supports-color": {
18094
+          "version": "5.5.0",
18095
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
18096
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
18097
+          "dev": true,
18098
+          "requires": {
18099
+            "has-flag": "^3.0.0"
18100
+          }
18101
+        },
18102
+        "ws": {
18103
+          "version": "6.2.1",
18104
+          "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
18105
+          "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
18106
+          "dev": true,
18107
+          "requires": {
18108
+            "async-limiter": "~1.0.0"
18109
+          }
18110
+        }
18111
+      }
18112
+    },
17948 18113
     "webpack-cli": {
17949 18114
       "version": "3.1.2",
17950 18115
       "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz",

+ 1
- 0
package.json 查看文件

@@ -124,6 +124,7 @@
124 124
     "string-replace-loader": "2.1.1",
125 125
     "style-loader": "0.19.0",
126 126
     "webpack": "4.26.1",
127
+    "webpack-bundle-analyzer": "3.4.1",
127 128
     "webpack-cli": "3.1.2",
128 129
     "webpack-dev-server": "3.1.14"
129 130
   },

+ 10
- 0
webpack.config.js 查看文件

@@ -1,6 +1,7 @@
1 1
 /* global __dirname */
2 2
 
3 3
 const process = require('process');
4
+const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
4 5
 
5 6
 /**
6 7
  * The URL of the Jitsi Meet deployment to be proxy to in the context of
@@ -9,6 +10,8 @@ const process = require('process');
9 10
 const devServerProxyTarget
10 11
     = process.env.WEBPACK_DEV_SERVER_PROXY_TARGET || 'https://beta.meet.jit.si';
11 12
 
13
+const analyzeBundle = process.argv.indexOf('--analyze-bundle') !== -1;
14
+
12 15
 const minimize
13 16
     = process.argv.indexOf('-p') !== -1
14 17
         || process.argv.indexOf('--optimize-minimize') !== -1;
@@ -123,6 +126,13 @@ const config = {
123 126
         publicPath: '/libs/',
124 127
         sourceMapFilename: `[name].${minimize ? 'min' : 'js'}.map`
125 128
     },
129
+    plugins: [
130
+        analyzeBundle
131
+            && new BundleAnalyzerPlugin({
132
+                analyzerMode: 'disabled',
133
+                generateStatsFile: true
134
+            })
135
+    ].filter(Boolean),
126 136
     resolve: {
127 137
         alias: {
128 138
             jquery: `jquery/dist/jquery${minimize ? '.min' : ''}.js`

正在加载...
取消
保存