87 lines
2.4 KiB
JavaScript
87 lines
2.4 KiB
JavaScript
// Tasks to compress
|
|
|
|
import { constants } from "node:zlib";
|
|
import gulp from "gulp";
|
|
import brotli from "gulp-brotli";
|
|
import zopfli from "gulp-zopfli-green";
|
|
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 compressModern = (rootDir, modernDir, compress) =>
|
|
gulp
|
|
.src([`${modernDir}/**/${filesGlob}`, `${rootDir}/sw-modern.js`], {
|
|
base: rootDir,
|
|
allowEmpty: true,
|
|
})
|
|
.pipe(compress === "zopfli" ? zopfli(zopfliOptions) : brotli(brotliOptions))
|
|
.pipe(gulp.dest(rootDir));
|
|
|
|
const compressOther = (rootDir, modernDir, compress) =>
|
|
gulp
|
|
.src(
|
|
[
|
|
`${rootDir}/**/${filesGlob}`,
|
|
`!${modernDir}/**/${filesGlob}`,
|
|
`!${rootDir}/{sw-modern,service_worker}.js`,
|
|
`${rootDir}/{authorize,onboarding}.html`,
|
|
],
|
|
{ base: rootDir, allowEmpty: true }
|
|
)
|
|
.pipe(compress === "zopfli" ? zopfli(zopfliOptions) : brotli(brotliOptions))
|
|
.pipe(gulp.dest(rootDir));
|
|
|
|
const compressAppModernBrotli = () =>
|
|
compressModern(paths.app_output_root, paths.app_output_latest, "brotli");
|
|
const compressAppModernZopfli = () =>
|
|
compressModern(paths.app_output_root, paths.app_output_latest, "zopfli");
|
|
|
|
const compressHassioModernBrotli = () =>
|
|
compressModern(
|
|
paths.hassio_output_root,
|
|
paths.hassio_output_latest,
|
|
"brotli"
|
|
);
|
|
const compressHassioModernZopfli = () =>
|
|
compressModern(
|
|
paths.hassio_output_root,
|
|
paths.hassio_output_latest,
|
|
"zopfli"
|
|
);
|
|
|
|
const compressAppOtherBrotli = () =>
|
|
compressOther(paths.app_output_root, paths.app_output_latest, "brotli");
|
|
const compressAppOtherZopfli = () =>
|
|
compressOther(paths.app_output_root, paths.app_output_latest, "zopfli");
|
|
|
|
const compressHassioOtherBrotli = () =>
|
|
compressOther(paths.hassio_output_root, paths.hassio_output_latest, "brotli");
|
|
const compressHassioOtherZopfli = () =>
|
|
compressOther(paths.hassio_output_root, paths.hassio_output_latest, "zopfli");
|
|
|
|
gulp.task(
|
|
"compress-app",
|
|
gulp.parallel(
|
|
compressAppModernBrotli,
|
|
compressAppOtherBrotli,
|
|
compressAppModernZopfli,
|
|
compressAppOtherZopfli
|
|
)
|
|
);
|
|
gulp.task(
|
|
"compress-hassio",
|
|
gulp.parallel(
|
|
compressHassioModernBrotli,
|
|
compressHassioOtherBrotli,
|
|
compressHassioModernZopfli,
|
|
compressHassioOtherZopfli
|
|
)
|
|
);
|