From f4bfcc6a69c2c7926fe6594e06c1366ef955455b Mon Sep 17 00:00:00 2001 From: Steve Repsher Date: Sun, 18 Feb 2024 23:03:39 +0000 Subject: [PATCH] Remove uncompressed files from bundles and compress source maps --- build-scripts/gulp/compress.js | 11 ++- package.json | 3 + yarn.lock | 128 +++++++++++++++++++++++++++++++-- 3 files changed, 135 insertions(+), 7 deletions(-) diff --git a/build-scripts/gulp/compress.js b/build-scripts/gulp/compress.js index aa1567b721..9e6bc39259 100644 --- a/build-scripts/gulp/compress.js +++ b/build-scripts/gulp/compress.js @@ -1,19 +1,26 @@ // Tasks to compress +import { deleteAsync } from "del"; import gulp from "gulp"; +import gulpIf from "gulp-if"; +import vinylPaths from "vinyl-paths"; import zopfli from "gulp-zopfli-green"; import paths from "../paths.cjs"; const zopfliOptions = { threshold: 150 }; +const compressedExt = /\.gz$/; +const deleteUncompressed = (p) => deleteAsync(p.replace(compressedExt, "")); + const compressDist = (rootDir) => gulp .src([ - `${rootDir}/**/*.{js,json,css,svg,xml}`, + `${rootDir}/**/*.{js?(.map),json,css,svg,xml}`, `${rootDir}/{authorize,onboarding}.html`, ]) .pipe(zopfli(zopfliOptions)) - .pipe(gulp.dest(rootDir)); + .pipe(gulp.dest(rootDir)) + .pipe(gulpIf(compressedExt, vinylPaths(deleteUncompressed))); gulp.task("compress-app", () => compressDist(paths.app_output_root)); gulp.task("compress-hassio", () => compressDist(paths.hassio_output_root)); diff --git a/package.json b/package.json index 446ea474d9..bb761ffacf 100644 --- a/package.json +++ b/package.json @@ -171,6 +171,7 @@ "@types/chromecast-caf-receiver": "6.0.13", "@types/chromecast-caf-sender": "1.0.8", "@types/glob": "8.1.0", + "@types/gulp-if": "^3", "@types/html-minifier-terser": "7.0.2", "@types/js-yaml": "4.0.9", "@types/leaflet": "1.9.8", @@ -207,6 +208,7 @@ "glob": "10.3.10", "gulp": "4.0.2", "gulp-flatmap": "1.0.2", + "gulp-if": "3.0.0", "gulp-json-transform": "0.4.8", "gulp-merge-json": "2.1.2", "gulp-rename": "2.0.0", @@ -239,6 +241,7 @@ "ts-lit-plugin": "2.0.2", "typescript": "5.3.3", "vinyl-buffer": "1.0.1", + "vinyl-paths": "5.0.0", "vinyl-source-stream": "2.0.0", "webpack": "5.90.2", "webpack-cli": "5.1.4", diff --git a/yarn.lock b/yarn.lock index 29f4b6d40e..3e8061a77a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4082,6 +4082,13 @@ __metadata: languageName: node linkType: hard +"@types/expect@npm:^1.20.4": + version: 1.20.4 + resolution: "@types/expect@npm:1.20.4" + checksum: 10/fa25b771c81fed431fdfe7c906ccdcb88af7aa4d06375a7798c317d8bcb2b3f78d132e358025d991ccd72083ffb743fd46e26427aa82dc69d7cdbc9b2e88ff3f + languageName: node + linkType: hard + "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": version: 4.17.43 resolution: "@types/express-serve-static-core@npm:4.17.43" @@ -4139,6 +4146,27 @@ __metadata: languageName: node linkType: hard +"@types/gulp-if@npm:^3": + version: 3.0.4 + resolution: "@types/gulp-if@npm:3.0.4" + dependencies: + "@types/gulp-match": "npm:*" + "@types/minimatch": "npm:*" + "@types/node": "npm:*" + checksum: 10/b00b971ee927df328fb0fb505ac5214c595e8975ba198a0c6dc713ad086879c6e51157ce50dc665cfafe6ad4199f8a7dc7ee78c14040eb7647fc801a85c0152f + languageName: node + linkType: hard + +"@types/gulp-match@npm:*": + version: 1.1.5 + resolution: "@types/gulp-match@npm:1.1.5" + dependencies: + "@types/minimatch": "npm:*" + "@types/vinyl": "npm:*" + checksum: 10/3668c4063d25dac269f785ff5de934c67fdffeb03728ddcc1036a593ecd579f67c983c761fb2c2dedbced9d1a29c14c2714e4fa776beab38de282e706059149f + languageName: node + linkType: hard + "@types/hammerjs@npm:^2.0.36": version: 2.0.45 resolution: "@types/hammerjs@npm:2.0.45" @@ -4291,7 +4319,7 @@ __metadata: languageName: node linkType: hard -"@types/minimatch@npm:^5.1.2": +"@types/minimatch@npm:*, @types/minimatch@npm:^5.1.2": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" checksum: 10/94db5060d20df2b80d77b74dd384df3115f01889b5b6c40fa2dfa27cfc03a68fb0ff7c1f2a0366070263eb2e9d6bfd8c87111d4bc3ae93c3f291297c1bf56c85 @@ -4499,6 +4527,16 @@ __metadata: languageName: node linkType: hard +"@types/vinyl@npm:*": + version: 2.0.11 + resolution: "@types/vinyl@npm:2.0.11" + dependencies: + "@types/expect": "npm:^1.20.4" + "@types/node": "npm:*" + checksum: 10/0f69e2d44748d0e55c3fcd4c2b5b59f0dc70b46fd5b9081abb1b81045543fbeb16e33d6ba2a21fb61d2182d91d99ba1c78be65311d1095857834827e2084417c + languageName: node + linkType: hard + "@types/webspeechapi@npm:0.0.29": version: 0.0.29 resolution: "@types/webspeechapi@npm:0.0.29" @@ -7495,6 +7533,18 @@ __metadata: languageName: node linkType: hard +"duplexify@npm:^4.1.1": + version: 4.1.2 + resolution: "duplexify@npm:4.1.2" + dependencies: + end-of-stream: "npm:^1.4.1" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + stream-shift: "npm:^1.0.0" + checksum: 10/eeb4f362defa4da0b2474d853bc4edfa446faeb1bde76819a68035632c118de91f6a58e6fe05c84f6e6de2548f8323ec8473aa9fe37332c99e4d77539747193e + languageName: node + linkType: hard + "each-props@npm:^1.3.2": version: 1.3.2 resolution: "each-props@npm:1.3.2" @@ -7512,6 +7562,13 @@ __metadata: languageName: node linkType: hard +"easy-transform-stream@npm:^1.0.0": + version: 1.0.1 + resolution: "easy-transform-stream@npm:1.0.1" + checksum: 10/3d783ad3ffa21690c9e84ee54a9993a882f07e86416f15fe8dfcfb2c93ea28ce79f10775c2e56d846bba6a9e85e64f9f867c085d5906031c06c97c5a5234be46 + languageName: node + linkType: hard + "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -7588,7 +7645,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0": +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -8767,6 +8824,13 @@ __metadata: languageName: node linkType: hard +"fork-stream@npm:^0.0.4": + version: 0.0.4 + resolution: "fork-stream@npm:0.0.4" + checksum: 10/8c80c34121e7fa96a8a46b5f20a3c0469c7d557e2303452317ada88f68195b64e4bea5596381bfaae7f800a57468867b34e4cf5acf0133da62bdd7ab0ab1fce8 + languageName: node + linkType: hard + "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" @@ -9305,6 +9369,17 @@ __metadata: languageName: node linkType: hard +"gulp-if@npm:3.0.0": + version: 3.0.0 + resolution: "gulp-if@npm:3.0.0" + dependencies: + gulp-match: "npm:^1.1.0" + ternary-stream: "npm:^3.0.0" + through2: "npm:^3.0.1" + checksum: 10/dd7395ed28382c667a4330816a0ae02d7bb3c34f265115c38e6285e44e5a915dae231c6bc54ece6d104e5fe46f0a025c8779c6c86c243886f3a5947de4b16553 + languageName: node + linkType: hard + "gulp-json-transform@npm:0.4.8": version: 0.4.8 resolution: "gulp-json-transform@npm:0.4.8" @@ -9319,6 +9394,15 @@ __metadata: languageName: node linkType: hard +"gulp-match@npm:^1.1.0": + version: 1.1.0 + resolution: "gulp-match@npm:1.1.0" + dependencies: + minimatch: "npm:^3.0.3" + checksum: 10/c2e83c3795550b78a0a8d5c7c8eb09eff6ae61601f08c1b93c7aef030308c8a3b2943daba72545de6e2d8d2e3a3435a7936731beb9a8985f569d32f37e35b6b7 + languageName: node + linkType: hard + "gulp-merge-json@npm:2.1.2": version: 2.1.2 resolution: "gulp-merge-json@npm:2.1.2" @@ -9591,6 +9675,7 @@ __metadata: "@types/chromecast-caf-receiver": "npm:6.0.13" "@types/chromecast-caf-sender": "npm:1.0.8" "@types/glob": "npm:8.1.0" + "@types/gulp-if": "npm:^3" "@types/html-minifier-terser": "npm:7.0.2" "@types/js-yaml": "npm:4.0.9" "@types/leaflet": "npm:1.9.8" @@ -9647,6 +9732,7 @@ __metadata: google-timezones-json: "npm:1.2.0" gulp: "npm:4.0.2" gulp-flatmap: "npm:1.0.2" + gulp-if: "npm:3.0.0" gulp-json-transform: "npm:0.4.8" gulp-merge-json: "npm:2.1.2" gulp-rename: "npm:2.0.0" @@ -9705,6 +9791,7 @@ __metadata: ua-parser-js: "npm:1.0.37" unfetch: "npm:5.0.0" vinyl-buffer: "npm:1.0.1" + vinyl-paths: "npm:5.0.0" vinyl-source-stream: "npm:2.0.0" vis-data: "npm:7.1.9" vis-network: "npm:9.1.9" @@ -10060,7 +10147,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521 @@ -11829,7 +11916,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:3.1.2, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:3.1.2, minimatch@npm:^3.0.3, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -13358,7 +13445,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:3, readable-stream@npm:^3.0.6, readable-stream@npm:^3.6.0": +"readable-stream@npm:2 || 3, readable-stream@npm:3, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -15005,6 +15092,18 @@ __metadata: languageName: node linkType: hard +"ternary-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "ternary-stream@npm:3.0.0" + dependencies: + duplexify: "npm:^4.1.1" + fork-stream: "npm:^0.0.4" + merge-stream: "npm:^2.0.0" + through2: "npm:^3.0.1" + checksum: 10/7e9414f011f82d43695a2702110ad099d6587d773a0559439a252943b1a99509a26f4daf0877de9a547fb4d36a8cefe5756079cfa310885855a8923a17b10a46 + languageName: node + linkType: hard + "terser-webpack-plugin@npm:5.3.10, terser-webpack-plugin@npm:^5.3.10": version: 5.3.10 resolution: "terser-webpack-plugin@npm:5.3.10" @@ -15091,6 +15190,16 @@ __metadata: languageName: node linkType: hard +"through2@npm:^3.0.1": + version: 3.0.2 + resolution: "through2@npm:3.0.2" + dependencies: + inherits: "npm:^2.0.4" + readable-stream: "npm:2 || 3" + checksum: 10/98bdffba8e877fd8beb2154adc4eb0d52fad281130f56f6e5d18f85d1e1aa528a7b27317b302eb5443f6636ab045d3c272e6dffc61d984775db284823b90532d + languageName: node + linkType: hard + "through2@npm:^4.0.2": version: 4.0.2 resolution: "through2@npm:4.0.2" @@ -15910,6 +16019,15 @@ __metadata: languageName: node linkType: hard +"vinyl-paths@npm:5.0.0": + version: 5.0.0 + resolution: "vinyl-paths@npm:5.0.0" + dependencies: + easy-transform-stream: "npm:^1.0.0" + checksum: 10/7158749480adf8bae349aaef79df123c9efd5fbb605437904c1d4649e378b2902e33ad58cdbc0ace639ece14d3cbaea5aaab2368ccf57026c2550db434efa86d + languageName: node + linkType: hard + "vinyl-source-stream@npm:2.0.0": version: 2.0.0 resolution: "vinyl-source-stream@npm:2.0.0"