Skip to content

Commit dd74a35

Browse files
authored
Use Brotli compression for modern build (#17906)
1 parent b1d8ec0 commit dd74a35

File tree

3 files changed

+68
-11
lines changed

3 files changed

+68
-11
lines changed

build-scripts/gulp/compress.js

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,54 @@
11
// Tasks to compress
22

3+
import { constants } from "node:zlib";
34
import gulp from "gulp";
5+
import brotli from "gulp-brotli";
46
import zopfli from "gulp-zopfli-green";
57
import paths from "../paths.cjs";
68

9+
const filesGlob = "*.{js,json,css,svg,xml}";
10+
const brotliOptions = {
11+
skipLarger: true,
12+
params: {
13+
[constants.BROTLI_PARAM_QUALITY]: constants.BROTLI_MAX_QUALITY,
14+
},
15+
};
716
const zopfliOptions = { threshold: 150 };
817

9-
const compressDist = (rootDir) =>
18+
const compressDistBrotli = (rootDir, modernDir) =>
1019
gulp
11-
.src([
12-
`${rootDir}/**/*.{js,json,css,svg,xml}`,
13-
`${rootDir}/{authorize,onboarding}.html`,
14-
])
20+
.src([`${modernDir}/**/${filesGlob}`, `${rootDir}/sw-modern.js`], {
21+
base: rootDir,
22+
})
23+
.pipe(brotli(brotliOptions))
24+
.pipe(gulp.dest(rootDir));
25+
26+
const compressDistZopfli = (rootDir, modernDir) =>
27+
gulp
28+
.src(
29+
[
30+
`${rootDir}/**/${filesGlob}`,
31+
`!${modernDir}/**/${filesGlob}`,
32+
`!${rootDir}/sw-modern.js`,
33+
`${rootDir}/{authorize,onboarding}.html`,
34+
],
35+
{ base: rootDir }
36+
)
1537
.pipe(zopfli(zopfliOptions))
1638
.pipe(gulp.dest(rootDir));
1739

18-
gulp.task("compress-app", () => compressDist(paths.app_output_root));
19-
gulp.task("compress-hassio", () => compressDist(paths.hassio_output_root));
40+
const compressAppBrotli = () =>
41+
compressDistBrotli(paths.app_output_root, paths.app_output_latest);
42+
const compressHassioBrotli = () =>
43+
compressDistBrotli(paths.hassio_output_root, paths.hassio_output_latest);
44+
45+
const compressAppZopfli = () =>
46+
compressDistZopfli(paths.app_output_root, paths.app_output_latest);
47+
const compressHassioZopfli = () =>
48+
compressDistZopfli(paths.hassio_output_root, paths.hassio_output_latest);
49+
50+
gulp.task("compress-app", gulp.parallel(compressAppBrotli, compressAppZopfli));
51+
gulp.task(
52+
"compress-hassio",
53+
gulp.parallel(compressHassioBrotli, compressHassioZopfli)
54+
);

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@
208208
"fs-extra": "11.2.0",
209209
"glob": "11.0.0",
210210
"gulp": "5.0.0",
211+
"gulp-brotli": "3.0.0",
211212
"gulp-json-transform": "0.5.0",
212213
"gulp-rename": "2.0.0",
213214
"gulp-zopfli-green": "6.0.2",

yarn.lock

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8790,6 +8790,16 @@ __metadata:
87908790
languageName: node
87918791
linkType: hard
87928792

8793+
"gulp-brotli@npm:3.0.0":
8794+
version: 3.0.0
8795+
resolution: "gulp-brotli@npm:3.0.0"
8796+
dependencies:
8797+
plugin-error: "npm:^1.0.1"
8798+
through2: "npm:^3.0.1"
8799+
checksum: 10/0eea1fc60ae7f256184155b61a30a916007d21d37234698d8cdb299f64f71b4d68ca3182528e7da5d71290079c32c0228573578b76f5af7af7230c31537ef9d2
8800+
languageName: node
8801+
linkType: hard
8802+
87938803
"gulp-cli@npm:^3.0.0":
87948804
version: 3.0.0
87958805
resolution: "gulp-cli@npm:3.0.0"
@@ -9109,6 +9119,7 @@ __metadata:
91099119
glob: "npm:11.0.0"
91109120
google-timezones-json: "npm:1.2.0"
91119121
gulp: "npm:5.0.0"
9122+
gulp-brotli: "npm:3.0.0"
91129123
gulp-json-transform: "npm:0.5.0"
91139124
gulp-rename: "npm:2.0.0"
91149125
gulp-zopfli-green: "npm:6.0.2"
@@ -11523,9 +11534,9 @@ __metadata:
1152311534
linkType: hard
1152411535

1152511536
"object-inspect@npm:^1.13.1":
11526-
version: 1.13.2
11527-
resolution: "object-inspect@npm:1.13.2"
11528-
checksum: 10/7ef65583b6397570a17c56f0c1841e0920e83900f2c94638927abb7b81ac08a19c7aae135bd9dcca96208cac0c7332b4650fb927f027b0cf92d71df2990d0561
11537+
version: 1.13.1
11538+
resolution: "object-inspect@npm:1.13.1"
11539+
checksum: 10/92f4989ed83422d56431bc39656d4c780348eb15d397ce352ade6b7fec08f973b53744bd41b94af021901e61acaf78fcc19e65bf464ecc0df958586a672700f0
1152911540
languageName: node
1153011541
linkType: hard
1153111542

@@ -12416,7 +12427,7 @@ __metadata:
1241612427
languageName: node
1241712428
linkType: hard
1241812429

12419-
"readable-stream@npm:3, readable-stream@npm:^3.0.6, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0":
12430+
"readable-stream@npm:2 || 3, readable-stream@npm:3, readable-stream@npm:^3.0.6, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0":
1242012431
version: 3.6.2
1242112432
resolution: "readable-stream@npm:3.6.2"
1242212433
dependencies:
@@ -13957,6 +13968,16 @@ __metadata:
1395713968
languageName: node
1395813969
linkType: hard
1395913970

13971+
"through2@npm:^3.0.1":
13972+
version: 3.0.2
13973+
resolution: "through2@npm:3.0.2"
13974+
dependencies:
13975+
inherits: "npm:^2.0.4"
13976+
readable-stream: "npm:2 || 3"
13977+
checksum: 10/98bdffba8e877fd8beb2154adc4eb0d52fad281130f56f6e5d18f85d1e1aa528a7b27317b302eb5443f6636ab045d3c272e6dffc61d984775db284823b90532d
13978+
languageName: node
13979+
linkType: hard
13980+
1396013981
"through2@npm:^4.0.2":
1396113982
version: 4.0.2
1396213983
resolution: "through2@npm:4.0.2"

0 commit comments

Comments
 (0)