Это Squoosh, но как библиотека Node.
Мы рады представить libSquoosh , экспериментальную библиотеку Node, на основе которой построен интерфейс командной строки Squoosh, предоставляющую вам все возможности интерфейса командной строки Squoosh с идиоматическим интерфейсом JavaScript.
Squoosh.app — это PWA, которое сжимает изображения в браузере. Он поддерживает множество старых и новых форматов изображений и обрабатывает их на стороне клиента в браузере через WebAssembly. Это означает, что ваши фотографии будут безопасно храниться на вашем компьютере, а не отправляться на какой-нибудь сервер, и что Squoosh работает даже в автономном режиме.
На Chrome DevSummit 2020 мы анонсировали Squoosh v2 вместе с интерфейсом командной строки Squoosh, позволяющим перенести все кодеки Squoosh в командную строку с помощью Node и WebAssembly. Это позволяет вам сжимать целые папки с помощью одной команды и использовать интерфейс командной строки , позволяющий выбирать параметры кодека за вас.
CLI обеспечивает значительную автоматизацию, поэтому вполне естественно, что разработчики начали просить более идиоматический интерфейс, чем программный вызов Squoosh CLI через оболочку. Антон (@atjn на GitHub) подошел к этой задаче и разделил код CLI Squoosh на две части: код интерфейса командной строки и базовую функциональность ядра.
import { ImagePool } from "@squoosh/lib";
// libSquoosh uses a worker-pool under the hood
// to parallelize all image processing.
const imagePool = new ImagePool();
// Accepts both file paths and Buffers/TypedArrays.
const image = imagePool.ingestImage("./squoosh.jpeg");
// Optional.
// await image.preprocess({
// resize: {
// enabled: true,
// width: 128,
// },
// });
await image.encode({
// All codecs are initialized with default values
// that can be individually overwritten.
mozjpeg: {
quality: 10,
},
avif: {
cqLevel: 10,
},
jxl: {},
});
const { extension, binary } = await image.encodedWith.mozjpeg;
await fs.writeFile(`output.${extension}`, binary);
// ... same for other encoders ...
await imagePool.close();
Наша цель — сделать сжатие изображений более доступным для авторов инструментов. Мы надеемся увидеть интеграцию с Webpack, Rollup и другими инструментами сборки, чтобы обеспечить правильную оптимизацию ваших изображений для Интернета.
Я хотел бы выразить огромное «спасибо» Антону за время, которое он посвятил Squoosh!
Для Squoosh CLI и libSquoosh еще рано, и у нас есть еще много идей и планов, которые мы хотели бы реализовать. А пока попробуйте libSquoosh! Однако помните, что это ранний экспериментальный выпуск и существует большая вероятность столкнуться с некоторыми ошибками. Если вы их найдете или у вас возникнут вопросы, пожалуйста, откройте проблему .
Если вы заинтересованы в том, чтобы внести свой вклад в Squoosh — например, внести свой вклад в крайне скудную документацию по libSquoosh или помочь с любой другой частью приложения — мы запускаем программу наставничества, чтобы помочь вам начать работу. Если вы хотите узнать больше, ознакомьтесь с нашей проблемой отслеживания .