Эх сурвалжийг харах

[frontend] Limit Webpack chunk size to around 1 MB

Johan Ahlen 5 жил өмнө
parent
commit
7a42217fbb

+ 8 - 2
desktop/core/src/desktop/js/webpack/configUtils.js

@@ -63,11 +63,17 @@ const hashCode = str => {
   return hash;
   return hash;
 };
 };
 
 
+/**
+ * @param {webpack.Module} module
+ * @param {compilation.Chunk[]} chunks
+ * @param {string} cacheGroupKey
+ * @return {string}
+ */
 const splitChunksName = (module, chunks, cacheGroupKey) => {
 const splitChunksName = (module, chunks, cacheGroupKey) => {
   let fullName = cacheGroupKey !== 'default' ? cacheGroupKey + '~' : '';
   let fullName = cacheGroupKey !== 'default' ? cacheGroupKey + '~' : '';
   fullName += chunks.map(item => item.name).join('~');
   fullName += chunks.map(item => item.name).join('~');
-  if (fullName.length > 80) {
-    return fullName.slice(0, 70).replace(/~[^~]*$/, '') + '~' + hashCode(fullName);
+  if (fullName.length > 75) {
+    return fullName.slice(0, 65).replace(/~[^~]*$/, '') + '~' + hashCode(fullName);
   }
   }
   return fullName;
   return fullName;
 };
 };

+ 64 - 2
package-lock.json

@@ -5170,6 +5170,12 @@
         "unist-util-find-all-after": "^3.0.1"
         "unist-util-find-all-after": "^3.0.1"
       }
       }
     },
     },
+    "@types/anymatch": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz",
+      "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==",
+      "dev": true
+    },
     "@types/babel__core": {
     "@types/babel__core": {
       "version": "7.1.8",
       "version": "7.1.8",
       "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.8.tgz",
       "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.8.tgz",
@@ -5358,6 +5364,12 @@
       "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==",
       "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==",
       "dev": true
       "dev": true
     },
     },
+    "@types/source-list-map": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
+      "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
+      "dev": true
+    },
     "@types/stack-utils": {
     "@types/stack-utils": {
       "version": "1.0.1",
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
       "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz",
@@ -5376,12 +5388,60 @@
       "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==",
       "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==",
       "dev": true
       "dev": true
     },
     },
+    "@types/tapable": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz",
+      "integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==",
+      "dev": true
+    },
+    "@types/uglify-js": {
+      "version": "3.11.0",
+      "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.11.0.tgz",
+      "integrity": "sha512-I0Yd8TUELTbgRHq2K65j8rnDPAzAP+DiaF/syLem7yXwYLsHZhPd+AM2iXsWmf9P2F2NlFCgl5erZPQx9IbM9Q==",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.6.1"
+      }
+    },
     "@types/unist": {
     "@types/unist": {
       "version": "2.0.3",
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz",
       "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz",
       "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==",
       "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==",
       "dev": true
       "dev": true
     },
     },
+    "@types/webpack": {
+      "version": "4.41.23",
+      "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.23.tgz",
+      "integrity": "sha512-ojA4CupZg8RCzVJLugWlvqrHpT59GWhqFxbinlsnvk10MjQCWB+ot7XDACctbWhnhtdhYK7+HOH1JxkVLiZhMg==",
+      "dev": true,
+      "requires": {
+        "@types/anymatch": "*",
+        "@types/node": "*",
+        "@types/tapable": "*",
+        "@types/uglify-js": "*",
+        "@types/webpack-sources": "*",
+        "source-map": "^0.6.0"
+      }
+    },
+    "@types/webpack-sources": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.0.0.tgz",
+      "integrity": "sha512-a5kPx98CNFRKQ+wqawroFunvFqv7GHm/3KOI52NY9xWADgc8smu4R6prt4EU/M4QfVjvgBkMqU4fBhw3QfMVkg==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*",
+        "@types/source-list-map": "*",
+        "source-map": "^0.7.3"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.7.3",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+          "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
+          "dev": true
+        }
+      }
+    },
     "@types/yargs": {
     "@types/yargs": {
       "version": "15.0.5",
       "version": "15.0.5",
       "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz",
       "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.5.tgz",
@@ -5478,7 +5538,8 @@
         },
         },
         "lodash": {
         "lodash": {
           "version": "4.17.15",
           "version": "4.17.15",
-          "resolved": "",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
           "dev": true
           "dev": true
         },
         },
         "ms": {
         "ms": {
@@ -13197,7 +13258,8 @@
         },
         },
         "lodash": {
         "lodash": {
           "version": "4.17.15",
           "version": "4.17.15",
-          "resolved": "",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
           "dev": true
           "dev": true
         },
         },
         "nwsapi": {
         "nwsapi": {

+ 1 - 0
package.json

@@ -90,6 +90,7 @@
     "@types/jquery": "3.5.0",
     "@types/jquery": "3.5.0",
     "@types/knockout": "3.4.67",
     "@types/knockout": "3.4.67",
     "@types/luxon": "1.25.0",
     "@types/luxon": "1.25.0",
+    "@types/webpack": "4.41.23",
     "@typescript-eslint/eslint-plugin": "3.4.0",
     "@typescript-eslint/eslint-plugin": "3.4.0",
     "@typescript-eslint/parser": "3.4.0",
     "@typescript-eslint/parser": "3.4.0",
     "@vue/test-utils": "^1.0.3",
     "@vue/test-utils": "^1.0.3",

+ 3 - 1
webpack.config.js

@@ -66,7 +66,9 @@ const config = {
     minimize: false,
     minimize: false,
     splitChunks: {
     splitChunks: {
       chunks: 'all',
       chunks: 'all',
-      name: splitChunksName
+      name: splitChunksName,
+      maxSize: 1000000,
+      hidePathInfo: true
     },
     },
     runtimeChunk: {
     runtimeChunk: {
       name: 'hue'
       name: 'hue'