Use Brotli compression for modern build
This commit is contained in:
parent
8136cc8008
commit
3d54e18a57
|
@ -1,19 +1,47 @@
|
||||||
// Tasks to compress
|
// Tasks to compress
|
||||||
|
|
||||||
|
import { constants } from "node:zlib";
|
||||||
import gulp from "gulp";
|
import gulp from "gulp";
|
||||||
|
import brotli from "gulp-brotli";
|
||||||
import zopfli from "gulp-zopfli-green";
|
import zopfli from "gulp-zopfli-green";
|
||||||
import paths from "../paths.cjs";
|
import paths from "../paths.cjs";
|
||||||
|
|
||||||
|
const filesGlob = "*.{js,json,css,svg,xml}";
|
||||||
|
const brotliOptions = {
|
||||||
|
skipLarger: true,
|
||||||
|
params: {
|
||||||
|
[constants.BROTLI_PARAM_QUALITY]: constants.BROTLI_MAX_QUALITY,
|
||||||
|
},
|
||||||
|
};
|
||||||
const zopfliOptions = { threshold: 150 };
|
const zopfliOptions = { threshold: 150 };
|
||||||
|
|
||||||
const compressDist = (rootDir) =>
|
const compressDistBrotli = (modernDir) =>
|
||||||
|
gulp
|
||||||
|
.src([`${modernDir}/**/${filesGlob}`])
|
||||||
|
.pipe(brotli(brotliOptions))
|
||||||
|
.pipe(gulp.dest(modernDir));
|
||||||
|
|
||||||
|
const compressDistZopfli = (rootDir, modernDir) =>
|
||||||
gulp
|
gulp
|
||||||
.src([
|
.src([
|
||||||
`${rootDir}/**/*.{js,json,css,svg,xml}`,
|
`${rootDir}/**/${filesGlob}`,
|
||||||
|
`!${modernDir}/**/${filesGlob}`,
|
||||||
`${rootDir}/{authorize,onboarding}.html`,
|
`${rootDir}/{authorize,onboarding}.html`,
|
||||||
])
|
])
|
||||||
.pipe(zopfli(zopfliOptions))
|
.pipe(zopfli(zopfliOptions))
|
||||||
.pipe(gulp.dest(rootDir));
|
.pipe(gulp.dest(rootDir));
|
||||||
|
|
||||||
gulp.task("compress-app", () => compressDist(paths.app_output_root));
|
const compressAppBrotli = () => compressDistBrotli(paths.app_output_latest);
|
||||||
gulp.task("compress-hassio", () => compressDist(paths.hassio_output_root));
|
const compressHassioBrotli = () =>
|
||||||
|
compressDistBrotli(paths.hassio_output_latest);
|
||||||
|
|
||||||
|
const compressAppZopfli = () =>
|
||||||
|
compressDistZopfli(paths.app_output_root, paths.app_output_latest);
|
||||||
|
const compressHassioZopfli = () =>
|
||||||
|
compressDistZopfli(paths.hassio_output_root, paths.hassio_output_latest);
|
||||||
|
|
||||||
|
gulp.task("compress-app", gulp.parallel(compressAppBrotli, compressAppZopfli));
|
||||||
|
gulp.task(
|
||||||
|
"compress-hassio",
|
||||||
|
gulp.parallel(compressHassioBrotli, compressHassioZopfli)
|
||||||
|
);
|
||||||
|
|
|
@ -206,6 +206,7 @@
|
||||||
"fs-extra": "11.2.0",
|
"fs-extra": "11.2.0",
|
||||||
"glob": "10.3.10",
|
"glob": "10.3.10",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
|
"gulp-brotli": "3.0.0",
|
||||||
"gulp-flatmap": "1.0.2",
|
"gulp-flatmap": "1.0.2",
|
||||||
"gulp-json-transform": "0.4.8",
|
"gulp-json-transform": "0.4.8",
|
||||||
"gulp-merge-json": "2.1.2",
|
"gulp-merge-json": "2.1.2",
|
||||||
|
|
25
yarn.lock
25
yarn.lock
|
@ -9205,6 +9205,16 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"gulp-brotli@npm:3.0.0":
|
||||||
|
version: 3.0.0
|
||||||
|
resolution: "gulp-brotli@npm:3.0.0"
|
||||||
|
dependencies:
|
||||||
|
plugin-error: "npm:^1.0.1"
|
||||||
|
through2: "npm:^3.0.1"
|
||||||
|
checksum: 10/0eea1fc60ae7f256184155b61a30a916007d21d37234698d8cdb299f64f71b4d68ca3182528e7da5d71290079c32c0228573578b76f5af7af7230c31537ef9d2
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"gulp-cli@npm:^2.2.0":
|
"gulp-cli@npm:^2.2.0":
|
||||||
version: 2.3.0
|
version: 2.3.0
|
||||||
resolution: "gulp-cli@npm:2.3.0"
|
resolution: "gulp-cli@npm:2.3.0"
|
||||||
|
@ -9584,6 +9594,7 @@ __metadata:
|
||||||
glob: "npm:10.3.10"
|
glob: "npm:10.3.10"
|
||||||
google-timezones-json: "npm:1.2.0"
|
google-timezones-json: "npm:1.2.0"
|
||||||
gulp: "npm:4.0.2"
|
gulp: "npm:4.0.2"
|
||||||
|
gulp-brotli: "npm:3.0.0"
|
||||||
gulp-flatmap: "npm:1.0.2"
|
gulp-flatmap: "npm:1.0.2"
|
||||||
gulp-json-transform: "npm:0.4.8"
|
gulp-json-transform: "npm:0.4.8"
|
||||||
gulp-merge-json: "npm:2.1.2"
|
gulp-merge-json: "npm:2.1.2"
|
||||||
|
@ -9998,7 +10009,7 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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
|
version: 2.0.4
|
||||||
resolution: "inherits@npm:2.0.4"
|
resolution: "inherits@npm:2.0.4"
|
||||||
checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521
|
checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521
|
||||||
|
@ -13286,7 +13297,7 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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.6.0":
|
||||||
version: 3.6.2
|
version: 3.6.2
|
||||||
resolution: "readable-stream@npm:3.6.2"
|
resolution: "readable-stream@npm:3.6.2"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -15009,6 +15020,16 @@ __metadata:
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"through2@npm:^4.0.2":
|
||||||
version: 4.0.2
|
version: 4.0.2
|
||||||
resolution: "through2@npm:4.0.2"
|
resolution: "through2@npm:4.0.2"
|
||||||
|
|
Loading…
Reference in New Issue