Gulp plugin to compress images using Squoosh
npm install gulp-squooshGulp plugin to compress images using Squoosh.
> The library this plugin covers is going to be deprecated,
> so you would better consider using another alternative.
!github test workflow status
!npm version
!license
!npm downloads
!nodejs support

```
npm i -D gulp-squoosh
`js
const gulp = require("gulp");
const gulpSquoosh = require("gulp-squoosh");
function processImages() {
return gulp.src("src/images/**").pipe(gulpSquoosh()).pipe(gulp.dest("dist/images"));
}
`
For available options, see libSqooush.
`js
gulpSquoosh({
preprocessOptions: {...},
encodeOptions: {...},
});
gulpSquoosh(({ width, height, size }) => ({
preprocessOptions: {...},
encodeOptions: {...},
}));
`
`js`
const DEFAULT_ENCODE_OPTIONS = {
mozjpeg: {},
webp: {},
avif: {},
jxl: {},
oxipng: {},
};
You can see full source code of the example here.
With growing adoption of ES modules, more and more libraries drop CommonJS support.
Despite the fact this library doesn't support ESM, you can continue to use it in your ESM projects,
here is an example.
`js
const gulp = require("gulp");
const gulpSquoosh = require("gulp-squoosh");
const gulpCache = require("gulp-cache");
const SOURCE = "src/images/**";
const DESTINATION = "build/images";
function processImages() {
return gulp
.src(SOURCE)
.pipe(
gulpCache(
gulpSquoosh(({ width, height, size, filePath }) => ({
preprocessOptions: {
resize: {
width: width * 0.5,
},
},
encodeOptions: {
jxl: {},
avif: {},
webp: {},
// wp2: {}
...(path.extname(filePath) === ".png" ? { oxipng: {} } : { mozjpeg: {} }),
},
}))
)
)
.pipe(gulp.dest(DESTINATION));
}
`
Then you can use converted images with
`html`

You cannot run multiple gulp-squoosh tasks in parallel (via gulp.parallel) because you will get a wasm memory error.gulp.serial
But you can just replace it with , it will not affect the speed:
`js
gulp.parallel(/ ... / compressImages, / ... / compressOtherImages);
// become
gulp.parallel(/ ... / gulp.series(compressImages, compressOtherImages) / ... /);
``
- https://www.smashingmagazine.com/2021/04/humble-img-element-core-web-vitals/
- https://www.industrialempathy.com/posts/image-optimizations/
- https://www.industrialempathy.com/posts/avif-webp-quality-settings/
- https://cloudinary.com/blog/time_for_next_gen_codecs_to_dethrone_jpeg