Squoosh CLI: программа для сжатия изображений

Squoosh CLI — это терминальная версия Squoosh, предназначенная для сжатия, конвертации и предобработки изображений из командной строки. В отличие от Squoosh.app, где пользователь вручную перетаскивает картинку в браузер, двигает ползунок качества и скачивает результат, Squoosh CLI работает как обычная CLI-утилита: принимает файлы, параметры кодека, папку вывода, суффикс имени и выполняет обработку без графического интерфейса.

Скачать Squoosh CLI

БесплатноmacOSПриложение

Для сжатия и оптимизации файлов

⬇ Скачать ФотоМАСТЕР бесплатно
⬇ Скачать Squoosh CLI на macOS

Главная идея программы простая: взять кодеки, знакомые по Squoosh, и сделать их доступными в автоматизированном рабочем процессе. Через @squoosh/cli можно сжимать JPEG через MozJPEG, делать WebP-версии изображений, собирать AVIF, оптимизировать PNG через OxiPNG, менять размер перед кодированием, уменьшать палитру и обрабатывать сразу несколько файлов. Поэтому Squoosh CLI особенно полезен не для разового уменьшения одной фотографии, а для повторяемой подготовки картинок для сайта, документации, статического генератора, frontend-сборки или локального архива.

Программа рассчитана на пользователей, которые нормально чувствуют себя в терминале. В ней нет кнопки Открыть, окна предпросмотра, встроенного файлового менеджера и визуального сравнения до и после. Зато есть точная команда, которую можно сохранить в package.json, повторить на другой папке, добавить в инструкцию для редактора или использовать перед публикацией изображений в CMS.

Параметр Значение
Название Squoosh CLI
Полное название пакета @squoosh/cli
Команда после глобальной установки squoosh-cli
Разработчик GoogleChromeLabs
Тип программы CLI-утилита для сжатия и конвертации изображений
Интерфейс Командная строка
Основная среда Node.js и npm
Лицензия Apache-2.0
Последняя опубликованная версия npm-пакета 0.7.3
Основные кодеки MozJPEG, WebP, AVIF, JPEG XL, WebP2, OxiPNG
Предобработка Resize, Quant, Rotate
Основной сценарий пакетная оптимизация изображений для web-проектов

Squoosh CLI не стоит воспринимать как замену Photoshop или как обычный конвертер с интерфейсом. Это именно инструмент командной строки: он удобен там, где нужно не смотреть на каждое изображение глазами, а применить заранее выбранные параметры к серии файлов.

Содержание

Статус проекта и важная оговорка перед использованием

Squoosh CLI занимает особое место среди инструментов оптимизации изображений. С одной стороны, это удобная утилита с доступом к сильным web-кодекам. С другой стороны, пакет больше не развивается активно, поэтому его нужно использовать с правильными ожиданиями.

Практический вывод такой: Squoosh CLI отлично подходит для локальных задач, статических сайтов, небольших и средних наборов изображений, тестирования WebP/AVIF и повторяемых команд. Но для современной серверной обработки, больших production-пайплайнов и проектов на свежих версиях Node.js чаще выбирают Sharp, ImageMagick, нативные cwebp/avifenc, OxiPNG или специальные сборочные плагины.

Это не делает Squoosh CLI плохой программой. Просто у нее понятная область применения. Она сильна как мост между Squoosh и терминалом: пользователь подбирает параметры, запускает команду, получает файлы меньшего размера. Если нужна максимальная скорость, активное развитие и гарантированная совместимость с новыми версиями Node.js, лучше заранее рассматривать альтернативы.

Особенно важно учитывать окружение. Пакет рассчитан на старые ветки Node.js. На более новых версиях Node.js возможны ошибки установки или запуска. Для стабильной работы разумно использовать Node 16, отдельное окружение через nvm, контейнер или изолированную сборочную среду.

Установка Squoosh CLI

Squoosh CLI можно запускать без постоянной установки через npx. Это самый удобный вариант для разовой обработки, проверки команды или использования на машине, где не хочется ставить пакет глобально.

npx @squoosh/cli <options...>

Например, так можно сразу вызвать справку:

npx @squoosh/cli --help

Второй вариант — глобальная установка через npm. После нее команда squoosh-cli становится доступной из терминала как обычная утилита.

npm i -g @squoosh/clisquoosh-cli <options...>

Запуск через npx удобен тем, что не требует отдельного шага установки. Глобальная установка удобна, если Squoosh CLI используется постоянно: например, для еженедельной подготовки изображений к публикации, обработки папок перед загрузкой на сайт или локальной оптимизации архива.

В реальной работе выбор обычно выглядит так:

Сценарий Лучше использовать
Нужно один раз сжать папку npx @squoosh/cli
Утилита часто используется вручную npm i -g @squoosh/cli
Нужно встроить в проект npm script с локальной или npx-командой
Есть проблемы с Node.js 18/20/22 Node 16 через nvm или контейнер
Нужно повторять команду в CI фиксированная версия пакета и контролируемая версия Node.js

Главное — не начинать с установки в глобальную систему, если проект важный. Лучше сначала проверить команду на копии папки с изображениями, убедиться в результате и только потом переносить ее в рабочий процесс.

Стартовый экран Squoosh и пример запуска команды Squoosh CLI для WebP

На изображении видно, как терминальная команда Squoosh CLI связывается с логикой Squoosh: программа берет исходный файл, применяет выбранный кодек и формирует оптимизированный результат. Для CLI-версии это базовый сценарий работы.

Интерфейс командной строки

У Squoosh CLI нет графического окна, но у него есть четкая структура команды. Базовая форма выглядит так:

squoosh-cli [options] <files...>

Здесь squoosh-cli — имя команды, [options] — набор параметров, а <files...> — один или несколько входных файлов. В этой схеме важно именно последнее многоточие: утилита рассчитана не только на один файл, но и на список изображений.

Основные элементы интерфейса Squoosh CLI:

Элемент Назначение
-V, --version показывает версию программы
-h, --help выводит справку по команде
-d, --output-dir <dir> задает папку для результата
-s, --suffix <suffix> добавляет суффикс к именам выходных файлов
--max-optimizer-rounds <rounds> задает число попыток автооптимизации
--optimizer-butteraugli-target <distance> задает целевую визуальную дистанцию Butteraugli
--resize [config] меняет размер изображения перед сжатием
--quant [config] уменьшает число цветов
--rotate [config] поворачивает изображение
--mozjpeg [config] создает JPEG через MozJPEG
--webp [config] создает WebP
--avif [config] создает AVIF
--jxl [config] создает JPEG XL
--wp2 [config] создает WebP2
--oxipng [config] создает оптимизированный PNG через OxiPNG

Такой интерфейс выглядит сухо, но в нем есть плюс: команда полностью воспроизводима. Если один раз подобраны параметры --webp '{"quality":75}', их можно сохранить, передать другому человеку, вставить в документацию проекта или применить к новой папке через месяц.

В Squoosh CLI параметры кодеков передаются не через отдельные ползунки, а через конфигурационный объект в строке. Например:

npx @squoosh/cli --webp '{"quality":75}' image.jpg

В этой команде:

  • npx @squoosh/cli запускает пакет;

  • --webp выбирает выходной кодек;

  • {"quality":75} задает качество WebP;

  • image.jpg указывает исходный файл.

Для новичка это менее удобно, чем графический ползунок. Для разработчика — наоборот: такой формат проще автоматизировать.

Что можно сделать в Squoosh CLI

Squoosh CLI выполняет несколько конкретных задач, связанных с оптимизацией изображений для сайта и локальной подготовкой файлов.

Первая задача — сжатие JPEG через MozJPEG. Это полезно для фотографий, иллюстраций, обложек статей, карточек товаров, больших баннеров и любых изображений, которые уже хранятся в JPEG. MozJPEG позволяет уменьшить размер файла, сохранив приемлемое визуальное качество.

Вторая задача — конвертация в WebP. Это один из самых частых сценариев использования Squoosh CLI. Пользователь берет JPEG или PNG и получает .webp-файл, который можно подключить на сайте через <picture>, использовать в каталоге или отдавать современным браузерам.

Третья задача — генерация AVIF. AVIF обычно интересен для изображений, где нужно получить максимально компактный файл при хорошем визуальном качестве. Squoosh CLI умеет создавать .avif, но кодирование может занимать заметно больше времени, чем WebP или MozJPEG.

Четвертая задача — оптимизация PNG через OxiPNG. Этот режим нужен для скриншотов интерфейса, схем, простых иллюстраций, PNG-иконок и графики, где важно сохранить формат PNG.

Пятая задача — пакетная обработка. Именно ради этого часто и выбирают CLI-версию Squoosh. Вместо ручного перетаскивания каждого файла можно выполнить команду для *.jpg, *.png или списка файлов.

Шестая задача — предобработка перед кодированием. Через --resize можно изменить размер изображения, через --quant уменьшить количество цветов, через --rotate повернуть картинку. Это не полноценный редактор, но для подготовки web-изображений этих операций часто достаточно.

Первый запуск: сжатие одного изображения

Самый простой запуск Squoosh CLI — обработка одного файла. Например, можно взять PNG и создать WebP-версию с автоматическими настройками:

npx @squoosh/cli --webp auto image.png

Параметр auto включает автооптимизацию. Squoosh CLI сам подбирает настройки сжатия, ориентируясь на целевое визуальное отличие. Это удобно, если нужно быстро получить приемлемый результат без ручного подбора качества.

Для более предсказуемого результата лучше указывать качество явно:

npx @squoosh/cli --webp '{"quality":75}' image.png

В результате рядом с исходным файлом появится WebP-версия. Если папка вывода не задана, Squoosh CLI использует текущую директорию. В простом тесте это нормально, но в рабочей папке удобнее сразу отправлять результат отдельно, чтобы не смешивать оригиналы и оптимизированные файлы.

Для JPEG-компрессии через MozJPEG команда выглядит так:

npx @squoosh/cli --mozjpeg '{"quality":80}' photo.jpg

Здесь quality отвечает за баланс размера и визуального качества. Чем ниже значение, тем меньше файл и тем выше риск видимых артефактов. Для фотографий в статьях часто начинают с диапазона 75–85, затем проверяют результат глазами.

Для PNG через OxiPNG команда может быть такой:

npx @squoosh/cli --oxipng '{}' screenshot.png

Пустой объект означает, что параметры кодека явно не переопределяются. Squoosh CLI использует значения по умолчанию.

Сохранение результата в отдельную папку

В рабочем процессе почти всегда удобнее складывать обработанные изображения в отдельную директорию. Для этого используется параметр -d или полная форма --output-dir.

npx @squoosh/cli --webp '{"quality":75}' -d output image.jpg

После такой команды Squoosh CLI сохранит результат в папку output. Это особенно удобно в трех случаях.

Первый случай — нужно сохранить оригиналы без изменений. Исходная папка остается чистой, а все оптимизированные версии лежат отдельно.

Второй случай — нужно сравнить файлы до и после обработки. Можно открыть две папки рядом, отсортировать по размеру и быстро понять, насколько эффективна команда.

Третий случай — подготовка изображений для сайта. Например, в проекте может быть структура:

source-images/  hero.jpg  catalog-01.jpg  catalog-02.jpgpublic/images/  hero.webp  catalog-01.webp  catalog-02.webp

Команда для такой структуры может выглядеть так:

npx @squoosh/cli --webp '{"quality":75}' -d public/images source-images/*.jpg

--output-dir — один из самых полезных параметров Squoosh CLI. Без него утилиту легко превратить в источник путаницы, особенно если команда генерирует несколько форматов.

Добавление суффикса к файлам

Параметр -s или --suffix добавляет текст к имени выходного файла. Это удобно, если нужно сохранить несколько вариантов одного изображения рядом.

npx @squoosh/cli --mozjpeg '{"quality":80}' -s "-compressed" photo.jpg

Если исходный файл называется photo.jpg, результат будет иметь имя с добавленным суффиксом. Такой подход удобен для тестов:

npx @squoosh/cli --mozjpeg '{"quality":90}' -s "-q90" photo.jpgnpx @squoosh/cli --mozjpeg '{"quality":75}' -s "-q75" photo.jpgnpx @squoosh/cli --mozjpeg '{"quality":60}' -s "-q60" photo.jpg

После этого можно сравнить три результата: размер файла, детализацию, шумы, артефакты вокруг контрастных границ и читаемость мелких элементов. Для фотографий это особенно полезно: одно изображение хорошо выглядит при quality:70, а другое заметно портится уже при quality:80.

Суффиксы также помогают при генерации форматов для сайта:

npx @squoosh/cli --webp '{"quality":75}' -s "-webp" -d output image.jpgnpx @squoosh/cli --avif '{"cqLevel":33}' -s "-avif" -d output image.jpg

В результате имена не конфликтуют, а редактор или разработчик сразу понимает, какой файл к какому формату относится.

Пакетная обработка изображений

Пакетная обработка — главный практический смысл Squoosh CLI. Если нужно обработать десять, пятьдесят или несколько сотен файлов, графический интерфейс Squoosh.app становится неудобным: каждую картинку нужно открыть, настроить, скачать, переименовать. В CLI это превращается в одну команду.

Пример для папки с JPEG:

npx @squoosh/cli --webp '{"quality":75}' -d dist ./images/*.jpg

Команда берет все .jpg из папки images, кодирует их в WebP и складывает результат в dist.

Пример для PNG:

npx @squoosh/cli --oxipng '{}' -d optimized ./screenshots/*.png

Такой вариант подходит для скриншотов интерфейса, изображений в документации и графики в PNG.

Пример для нескольких расширений удобнее делать отдельными командами:

npx @squoosh/cli --webp '{"quality":75}' -d dist ./images/*.jpgnpx @squoosh/cli --webp '{"quality":75}' -d dist ./images/*.png

В macOS и Linux шаблон *.jpg обычно раскрывается оболочкой. В Windows поведение зависит от используемой оболочки. В PowerShell надежнее использовать перебор файлов:

Get-ChildItem .images -Filter *.jpg | ForEach-Object {  npx @squoosh/cli --webp '{"quality":75}' -d output $_.FullName}

При пакетной обработке лучше сначала проверить команду на 2–3 файлах. Если результат устраивает, можно запускать ее на всю папку. Это защищает от ситуации, когда неправильно выбранное качество или формат портит большой набор изображений.

На скриншоте показан типичный результат обработки: Squoosh CLI выводит исходный файл, новый файл, итоговый размер и процент от первоначального размера. Такой вывод удобен тем, что сразу видно, насколько уменьшился вес изображения после конвертации.

Конвертация в WebP

WebP — один из самых практичных форматов для Squoosh CLI. Он хорошо подходит для изображений на сайтах: фотографий, карточек товаров, иллюстраций, превью, баннеров и графики, где важен небольшой размер файла.

Базовая команда:

npx @squoosh/cli --webp '{"quality":75}' image.jpg

Для папки:

npx @squoosh/cli --webp '{"quality":75}' -d webp ./images/*.jpg

Если нужно использовать автоматический подбор параметров:

npx @squoosh/cli --webp auto -d webp ./images/*.jpg

В практической работе лучше понимать разницу между auto и ручным качеством.

auto удобен, когда нужно быстро обработать набор изображений без тонкой настройки. Утилита пробует подобрать параметры так, чтобы уменьшить файл и удержать визуальное отличие в пределах заданной метрики. Это хороший режим для предварительной оптимизации.

Ручной quality удобен, когда проекту нужна предсказуемость. Например, редакция может принять правило: все JPEG-обложки конвертируются в WebP с качеством 75, а крупные hero-изображения — с качеством 82. Тогда результат проще контролировать.

Для WebP можно использовать более развернутую конфигурацию:

npx @squoosh/cli --webp '{"quality":75,"lossless":0,"method":4}' -d webp ./images/*.jpg

Не обязательно указывать все возможные параметры. Если какой-то параметр не задан, Squoosh CLI берет значение по умолчанию. В этом и состоит удобство: можно начать с короткой команды, а затем добавлять детали только при необходимости.

Для сайта WebP-версии часто подключают через <picture>:

<picture>  <source srcset="/images/photo.avif" type="image/avif">  <source srcset="/images/photo.webp" type="image/webp">  <img src="/images/photo.jpg" alt="Описание изображения"></picture>

Squoosh CLI в таком сценарии отвечает не за HTML, а за подготовку файлов photo.webp и photo.avif.

Конвертация в AVIF

AVIF интересен там, где нужно максимально уменьшить вес изображений. Он часто дает сильное сжатие, но требует больше времени на кодирование и более аккуратного контроля качества.

Простая команда:

npx @squoosh/cli --avif auto image.jpg

Команда с папкой вывода:

npx @squoosh/cli --avif auto -d avif ./images/*.jpg

AVIF хорошо подходит для:

  • больших фотографий в статьях;

  • фоновых изображений;

  • промо-баннеров;

  • карточек каталога;

  • изображений, которые будут отдаваться через <picture> с fallback на WebP или JPEG.

Но AVIF не всегда нужно делать единственным форматом. В реальном web-проекте разумнее иметь несколько версий:

npx @squoosh/cli --avif auto -d dist ./images/*.jpgnpx @squoosh/cli --webp '{"quality":75}' -d dist ./images/*.jpg

Такой набор позволяет браузеру выбрать лучший поддерживаемый вариант. AVIF получат браузеры, которые его поддерживают, WebP — остальные современные браузеры, а JPEG останется базовым fallback.

При работе с AVIF нужно помнить две вещи. Во-первых, кодирование может быть медленным, особенно на больших фотографиях. Во-вторых, результат обязательно нужно просматривать: агрессивное сжатие может давать неприятные артефакты на лицах, градиентах, небе, тенях и мелких деталях.

Для массовой обработки AVIF стоит запускать на копии папки и не выбирать слишком агрессивные параметры сразу. Лучше начать с auto, оценить результат, затем подбирать настройки под тип изображений.

Оптимизация JPEG через MozJPEG

MozJPEG в Squoosh CLI нужен для создания оптимизированных .jpg. Это один из самых понятных режимов, потому что JPEG до сих пор остается основным форматом для фотографий, иллюстраций и изображений в старых CMS.

Базовая команда:

npx @squoosh/cli --mozjpeg '{"quality":80}' photo.jpg

Команда с отдельной папкой:

npx @squoosh/cli --mozjpeg '{"quality":80}' -d compressed ./photos/*.jpg

Для публикации в интернете часто используют progressive JPEG. В Squoosh CLI это задается через конфигурацию MozJPEG:

npx @squoosh/cli --mozjpeg '{"quality":80,"progressive":true}' -d compressed ./photos/*.jpg

Progressive JPEG удобен для web-страниц: изображение может отображаться постепенно, от грубого варианта к более детальному. Это не всегда критично, но для больших изображений в статьях и лендингах полезно.

Более полный пример настроек MozJPEG:

npx @squoosh/cli --mozjpeg '{"quality":78,"progressive":true,"optimize_coding":true,"smoothing":0}' -d output ./images/*.jpg

В таком варианте quality определяет основной уровень сжатия, progressive включает прогрессивный JPEG, optimize_coding оставляет оптимизацию кодирования, а smoothing не добавляет дополнительное размытие.

MozJPEG в Squoosh CLI особенно полезен, когда сайт пока не готов полноценно отдавать WebP/AVIF, но уменьшить JPEG уже нужно. Это простой путь: исходные .jpg остаются .jpg, меняется только вес файла и параметры кодирования.

Оптимизация PNG через OxiPNG

OxiPNG в Squoosh CLI отвечает за оптимизацию PNG. Этот режим не надо путать с конвертацией PNG в WebP или с уменьшением числа цветов через --quant. OxiPNG работает как PNG-оптимизатор: результат остается PNG-файлом.

Простой пример:

npx @squoosh/cli --oxipng '{}' screenshot.png

Для папки со скриншотами:

npx @squoosh/cli --oxipng '{}' -d optimized ./screenshots/*.png

OxiPNG хорошо подходит для:

  • скриншотов интерфейса;

  • PNG-иллюстраций;

  • графики с прозрачностью;

  • схем;

  • изображений в документации;

  • UI-макетов;

  • иконок, если они не переведены в SVG.

Если PNG содержит фотографию, часто выгоднее сделать WebP или AVIF. Если PNG содержит интерфейсный скриншот с текстом, графикой и резкими границами, OxiPNG может быть более безопасным вариантом, потому что не меняет формат на lossy-изображение.

Пример практического сценария:

npx @squoosh/cli --oxipng '{}' -d docs/img-optimized docs/img/*.png

Такой командой удобно готовить картинки для документации: исходные скриншоты остаются в docs/img, а оптимизированные версии попадают в docs/img-optimized.

Если PNG нужно не просто оптимизировать, а сильно уменьшить за счет палитры, используется уже другой параметр — --quant.

Изменение размера перед сжатием

Squoosh CLI умеет менять размер изображения перед кодированием. Это важная функция: часто самый большой выигрыш дает не выбор кодека, а уменьшение физического разрешения.

Например, если фотография имеет ширину 6000 пикселей, а на сайте показывается в блоке шириной 1200 пикселей, нет смысла хранить такую большую версию для обычной статьи. Сначала изображение нужно уменьшить, а затем сжать.

Пример с WebP:

npx @squoosh/cli --resize '{"enabled":true,"width":1200}' --webp '{"quality":75}' -d output image.jpg

В этой команде --resize выполняется перед --webp. То есть Squoosh CLI сначала меняет размер, затем кодирует результат в WebP.

Для папки:

npx @squoosh/cli --resize '{"enabled":true,"width":1200}' --webp '{"quality":75}' -d output ./images/*.jpg

Практический вариант для статей:

npx @squoosh/cli --resize '{"enabled":true,"width":1280}' --mozjpeg '{"quality":82,"progressive":true}' -d article-images ./raw/*.jpg

Так можно подготовить изображения шириной 1280 пикселей для публикации в тексте. Если на сайте основной контейнер не шире 1200–1300 пикселей, такие файлы будут заметно легче оригиналов с камеры.

С resize нужно быть аккуратным. Если задать только ширину, высота обычно рассчитывается пропорционально, что удобно для фотографий. Если принудительно задавать и ширину, и высоту, можно получить искажение пропорций. Для контентных изображений безопаснее сохранять исходное соотношение сторон.

Интерфейс Squoosh с блоками Resize, Reduce palette и Compress

Этот интерфейс хорошо показывает логику, которую CLI переносит в терминал: в Squoosh есть отдельные блоки для изменения размера, уменьшения палитры и выбора кодека сжатия. В Squoosh CLI те же действия выполняются через параметры --resize, --quant, --webp, --avif, --mozjpeg и --oxipng.

Уменьшение палитры через --quant

Параметр --quant уменьшает количество цветов. Это называется палитризацией. Такой подход хорошо работает не на всех изображениях, но в правильных сценариях может резко уменьшить размер файла.

Пример:

npx @squoosh/cli --quant '{"enabled":true,"numColors":256}' --oxipng '{}' -d output image.png

Смысл команды: сначала уменьшить число цветов, затем сохранить оптимизированный PNG.

--quant полезен для:

  • скриншотов интерфейса;

  • схем;

  • простых иллюстраций;

  • изображений с ограниченным количеством цветов;

  • графиков;

  • плоской UI-графики.

Для фотографий --quant часто не подходит. На лицах, тенях, небе, градиентах и сложных текстурах уменьшение палитры может дать заметные переходы, пятна и грубую постеризацию. Поэтому --quant нужно проверять глазами.

Пример для скриншотов:

npx @squoosh/cli --quant '{"enabled":true,"numColors":128}' --oxipng '{}' -d optimized ./screens/*.png

Если результат выглядит грубо, можно увеличить numColors до 256. Если качество нормальное, а размер все еще большой, можно попробовать 64, но это уже агрессивный режим.

В Squoosh CLI удобно комбинировать --quant с --webp:

npx @squoosh/cli --quant '{"enabled":true,"numColors":256}' --webp '{"quality":80}' -d webp ./screens/*.png

Такой вариант может быть полезен для скриншотов в документации, где итоговый формат WebP подходит лучше, чем PNG.

Поворот изображения через --rotate

Параметр --rotate нужен для поворота изображения перед сжатием. Это не самая часто используемая функция, но она полезна в автоматизации: можно привести изображения к нужной ориентации и сразу закодировать.

Пример:

npx @squoosh/cli --rotate '{"enabled":true,"numRotations":1}' --webp '{"quality":75}' image.jpg

На практике --rotate используют реже, чем --resize и --quant, потому что ориентацию обычно исправляют до этапа оптимизации. Но сама возможность важна: Squoosh CLI выполняет не только финальное кодирование, но и простую предобработку.

Для больших наборов фотографий не стоит делать поворот вслепую для всей папки. Лучше сначала проверить, какие изображения действительно требуют разворота. Иначе можно обработать все файлы одинаково и получить часть изображений в неправильной ориентации.

Автооптимизация и Butteraugli

Один из интересных режимов Squoosh CLI — автооптимизация через auto. Вместо ручного указания {"quality":75} можно передать кодеку значение auto:

npx @squoosh/cli --webp auto image.jpg

или:

npx @squoosh/cli --avif auto image.jpg

В этом режиме Squoosh CLI пытается сжать изображение как можно сильнее, ориентируясь на визуальную метрику Butteraugli. Упрощенно это означает: программа не просто ставит качество 75, а подбирает степень сжатия относительно допустимого визуального отличия.

За поведение автооптимизации отвечают параметры:

--max-optimizer-rounds <rounds>--optimizer-butteraugli-target <butteraugli distance>

--max-optimizer-rounds задает максимальное количество попыток сжатия при подборе. Значение по умолчанию — 6. Чем больше попыток, тем дольше может выполняться обработка.

--optimizer-butteraugli-target задает целевую дистанцию Butteraugli. Значение по умолчанию — 1.4. Чем выше целевая дистанция, тем больше программа может допустить визуальных отличий, а значит, тем сильнее потенциально сжатие и выше риск артефактов.

Пример:

npx @squoosh/cli --optimizer-butteraugli-target 1.2 --max-optimizer-rounds 8 --webp auto image.jpg

Такой режим подходит, когда пользователь хочет получить автоматический баланс качества и веса. Но его не стоит использовать без проверки на критичных изображениях: фотографии людей, продуктовые фото, медицинские иллюстрации, схемы с мелким текстом и изображения для печати лучше контролировать вручную.

Как читать вывод Squoosh CLI в терминале

После запуска Squoosh CLI выводит результат обработки в терминале. Обычно пользователь видит список файлов, исходный размер, новый файл, новый размер и процент относительно оригинала.

Типичный смысл строки такой:

photo.jpg: 2.4MB  output/photo.webp -> 310.2kB (12.9%)

Это означает, что исходный файл весил 2.4 MB, а WebP-результат занял 310.2 kB, то есть примерно 12.9% от исходного размера.

Такой вывод полезен для быстрой оценки:

  • какие изображения сжались радикально;

  • какие почти не изменились;

  • где формат выбран удачно;

  • где стоит попробовать другой кодек;

  • где исходник уже был хорошо оптимизирован;

  • где лучше уменьшить физическое разрешение.

Если PNG-скриншот весил 900 kB, а после OxiPNG стал 850 kB, это нормальный, но не впечатляющий результат. Возможно, там уже был оптимизированный PNG. Если тот же скриншот после WebP стал 120 kB и визуально остался хорошим, WebP для этой задачи может быть выгоднее.

Если JPEG-фотография 3 MB после MozJPEG стала 2.5 MB, это слабый выигрыш. В таком случае нужно проверить разрешение: вероятно, файл слишком большой по пикселям, и сначала нужен --resize.

Пакетная обработка изображений в Squoosh CLI с выводом размеров и процентов сжатия

На скриншоте видно, как Squoosh CLI выводит результаты пакетной обработки: исходные имена файлов, новые WebP-файлы, уменьшенный размер и процент от оригинала. Такой формат вывода удобен для быстрой проверки эффективности выбранной команды.

Связка с интерфейсом Squoosh.app

Хотя Squoosh CLI сам работает в терминале, его удобно использовать вместе с веб-интерфейсом Squoosh. В графической версии проще подобрать параметры: пользователь видит изображение, выбирает кодек, двигает Quality, раскрывает Advanced settings, проверяет результат через сравнение и только потом переносит настройки в команду.

В интерфейсе Squoosh есть блоки, которые напрямую соответствуют возможностям CLI:

Блок в Squoosh.app Близкий параметр в Squoosh CLI
Resize --resize
Reduce palette --quant
Compress --mozjpeg, --webp, --avif, --jxl, --wp2, --oxipng
Quality часть конфигурации кодека
Advanced settings расширенная конфигурация кодека

Настройки сжатия в Squoosh: выбор кодека, resize, reduce palette и качество

Этот скриншот важен для понимания логики Squoosh CLI. CLI-утилита не появляется отдельно от Squoosh как случайный конвертер. Она наследует подход Squoosh: пользователь подбирает параметры сжатия, а затем применяет их к файлам через командную строку.

В графическом интерфейсе качество видно сразу: можно открыть изображение, сравнить оригинал и результат, посмотреть новый вес файла и только после этого решать, какие параметры переносить в CLI. В Squoosh CLI такой визуальной проверки нет, поэтому разумный рабочий процесс выглядит так: сначала подобрать качество в Squoosh.app на нескольких типичных изображениях, затем применить выбранную команду к папке.

Интеграция в рабочий процесс сайта

Squoosh CLI хорошо вписывается в подготовку изображений для сайта. Его можно использовать вручную, в npm scripts, в локальном скрипте, в инструкции для контент-менеджера или как часть сборки статического проекта.

Простейший сценарий:

  1. Редактор складывает исходные изображения в папку source-images.

  2. Разработчик или редактор запускает команду Squoosh CLI.

  3. Оптимизированные файлы появляются в public/images.

  4. На сайт загружаются только подготовленные версии.

  5. Оригиналы остаются в отдельной папке как архив.

Пример структуры:

project/  source-images/    article-01.jpg    article-02.jpg    article-03.jpg  public/    images/      article-01.webp      article-02.webp      article-03.webp

Команда:

npx @squoosh/cli --resize '{"enabled":true,"width":1280}' --webp '{"quality":75}' -d public/images source-images/*.jpg

Такой вариант делает сразу две вещи: уменьшает ширину до 1280 пикселей и кодирует изображения в WebP. Для статей, обзоров программ, инструкций и блогов это часто оптимальный минимум.

Если сайт использует <picture>, можно подготовить два современных формата:

npx @squoosh/cli --resize '{"enabled":true,"width":1280}' --avif auto -d public/images source-images/*.jpgnpx @squoosh/cli --resize '{"enabled":true,"width":1280}' --webp '{"quality":75}' -d public/images source-images/*.jpg

После этого в HTML можно подключить AVIF, WebP и оригинальный JPEG как fallback. Squoosh CLI не генерирует сам HTML-разметку, но хорошо выполняет подготовительную часть.

Пример npm script в package.json

Если Squoosh CLI используется в проекте регулярно, команду удобно сохранить в package.json.

{  "scripts": {    "images:webp": "squoosh-cli --webp '{"quality":75}' -d public/images source-images/*.jpg",    "images:avif": "squoosh-cli --avif auto -d public/images source-images/*.jpg",    "images:jpeg": "squoosh-cli --mozjpeg '{"quality":82,"progressive":true}' -d public/images source-images/*.jpg"  }}

После этого можно запускать:

npm run images:webp

или:

npm run images:avif

Такой подход лучше, чем хранить команды в заметках. Команда становится частью проекта, ее видно в репозитории, ее можно повторить на другой машине.

Но с package.json есть тонкость: кавычки. Внутри JSON нужно экранировать двойные кавычки в конфигурации кодека. Поэтому команда в терминале:

squoosh-cli --webp '{"quality":75}' image.jpg

внутри package.json превращается в строку с экранированием:

"squoosh-cli --webp '{"quality":75}' image.jpg"

Если команда должна работать одинаково в macOS, Linux и Windows, лучше отдельно проверить ее в нужной оболочке. Самая частая проблема Squoosh CLI — не кодек, а кавычки, пути и glob-шаблоны.

Сильные стороны Squoosh CLI

Главное преимущество Squoosh CLI — доступ к кодекам Squoosh из командной строки. Пользователь получает не отдельную утилиту только для WebP или только для PNG, а единый интерфейс к нескольким форматам.

Второе преимущество — пакетная обработка. Squoosh.app хорош для одного изображения, но неудобен для папки. Squoosh CLI решает именно эту проблему: один раз задается команда, затем она применяется к множеству файлов.

Третье преимущество — локальная обработка. Изображения не нужно отправлять в онлайн-компрессор. Для рабочих файлов, клиентских материалов, скриншотов админок и закрытой документации это важно.

Четвертое преимущество — удобный запуск через npm-экосистему. Если в проекте уже используется Node.js, добавить Squoosh CLI несложно. Команду можно хранить в npm scripts, запускать через npx или использовать глобально.

Пятое преимущество — поддержка современных web-форматов. Squoosh CLI умеет WebP и AVIF, а также MozJPEG и OxiPNG. Для подготовки изображений к публикации в интернете этого набора достаточно во многих случаях.

Шестое преимущество — возможность предобработки. --resize, --quant и --rotate закрывают базовые операции перед финальным сжатием. Не нужно отдельно запускать другой инструмент только ради уменьшения ширины изображения.

Седьмое преимущество — воспроизводимость. Команда в терминале точнее, чем поставить примерно такой ползунок. Если в проекте принято --webp '{"quality":75}', это правило можно повторять сколько угодно раз.

Недостатки и ограничения

Главный недостаток Squoosh CLI — отсутствие активного развития. Пакет остается полезным, но его нельзя считать современной постоянно обновляемой утилитой для всех сценариев. Если проект строится сегодня с нуля и предполагает долгую поддержку, этот фактор нужно учитывать.

Второй недостаток — чувствительность к версии Node.js. Пакет рассчитан на старые ветки Node.js. На новых версиях возможны проблемы. Для обычного пользователя это неприятный барьер: вместо простой установки приходится думать о nvm, контейнере или отдельном окружении.

Третий недостаток — не самый дружелюбный формат конфигурации. В GUI пользователь двигает ползунок Quality. В Squoosh CLI ему нужно передавать объект настроек в строке. Ошибка в кавычках, скобках или экранировании ломает запуск.

Четвертый недостаток — ограниченная документация по тонким параметрам кодеков. Базовые опции понятны, но глубокая настройка MozJPEG, WebP или AVIF требует опыта и экспериментов.

Пятый недостаток — скорость. Squoosh CLI достаточно быстр для умеренной обработки, но не является самым быстрым инструментом для больших архивов. Если нужно регулярно обрабатывать десятки тысяч изображений, Sharp, нативные кодировщики или специализированные пайплайны могут быть практичнее.

Шестой недостаток — отсутствие визуального контроля. CLI не показывает картинку. Он выводит размер и процент, но не показывает артефакты. Поэтому после подбора команды результат нужно проверять вручную хотя бы на типичных изображениях.

Седьмой недостаток — особенности Windows. Команды с JSON-конфигами, кавычками и glob-шаблонами проще писать в bash/zsh, чем в cmd. В PowerShell тоже можно работать, но иногда приходится адаптировать команды.

Для кого подходит Squoosh CLI

Squoosh CLI подходит веб-разработчикам, которым нужно быстро готовить изображения для сайта. Это особенно удобно в проектах без тяжелой backend-инфраструктуры: статические сайты, документация, landing pages, личные блоги, небольшие каталоги.

Программа подходит техническим редакторам, которые не боятся терминала. Если редактор регулярно готовит скриншоты и изображения к публикации, одна сохраненная команда может заменить ручную обработку десятков файлов.

Squoosh CLI полезен SEO-специалистам и контент-менеджерам, работающим с производительностью сайта. Оптимизация изображений часто дает заметный эффект на скорости загрузки страниц, особенно если раньше на сайт загружались оригинальные фотографии без resize и сжатия.

Утилита подходит разработчикам документации. Скриншоты интерфейса, схемы и иллюстрации можно прогонять через OxiPNG, WebP или resize перед коммитом.

Также Squoosh CLI удобен владельцам сайтов, которые хотят хранить оригиналы отдельно, а на сайт выкладывать только подготовленные версии. Команда с -d output хорошо разделяет исходники и результат.

Кому лучше выбрать не Squoosh CLI

Squoosh CLI не подходит пользователям, которым нужен графический интерфейс. Если человек хочет открыть папку, выбрать качество мышью и нажать кнопку Сжать, лучше взять Squoosh.app, ImageOptim, Caesium Image Compressor, FileOptimizer, XnConvert или другой GUI-инструмент.

Программа не подходит тем, кто не работает с Node.js и не хочет разбираться с npm. Для таких пользователей сама установка может оказаться сложнее, чем сжатие изображений.

Squoosh CLI не лучший выбор для крупных серверных систем. Если приложение должно принимать пользовательские изображения, генерировать превью, кэшировать версии и обрабатывать поток файлов, лучше смотреть в сторону Sharp, libvips, ImageMagick или специализированного backend-пайплайна.

Не стоит выбирать Squoosh CLI, если требуется максимальная скорость на больших объемах. Для одноразовой обработки папки он удобен. Для постоянной промышленной обработки больших архивов есть более подходящие инструменты.

Также Squoosh CLI не идеален для дизайнеров, которым нужен визуальный контроль каждого изображения. В этом случае лучше сначала работать в Squoosh.app или другом визуальном компрессоре, а CLI использовать только после подбора типовых параметров.

Сравнение с аналогами

Squoosh CLI проще оценивать не как лучший компрессор изображений вообще, а как конкретный инструмент в ряду других программ. У него есть сильная сторона — единый CLI-доступ к кодекам Squoosh. Но в разных задачах конкуренты могут быть удобнее.

Программа Интерфейс Лучше всего подходит для Сильная сторона Ограничение
Squoosh CLI CLI пакетное web-сжатие несколько кодеков Squoosh в одной команде нет активного развития, старое Node.js-окружение
Squoosh.app Web UI ручная настройка одного изображения визуальное сравнение, Quality, Advanced settings неудобен для массовой обработки
Sharp Node.js API серверная и программная обработка высокая скорость, удобный API, resize/convert требует программирования
ImageMagick CLI/API универсальная обработка изображений огромное число операций и форматов сложнее точечно настраивать web-кодеки
cwebp CLI точное создание WebP нативный инструмент для WebP работает только со своим форматом
avifenc CLI точное создание AVIF глубокий контроль AVIF-кодирования отдельная утилита, больше параметров
imagemin Node.js tooling frontend-сборки и плагины хорошо встраивается в build tools зависит от набора плагинов
OxiPNG CLI/library lossless-оптимизация PNG сильная специализация на PNG не делает WebP/AVIF/JPEG

Squoosh CLI и Squoosh.app

Squoosh.app удобнее для ручной работы. Пользователь видит изображение, двигает ползунки, сравнивает оригинал и результат, меняет кодек и сразу понимает, насколько ухудшилось качество. Это лучший вариант для подбора настроек на одном изображении.

Squoosh CLI удобнее для повторения. Если параметры уже выбраны, CLI позволяет применить их к папке. Вместо ручной работы с каждым файлом запускается одна команда.

Оптимальная связка такая: Squoosh.app для подбора качества, Squoosh CLI для массовой обработки.

Squoosh CLI и Sharp

Sharp — более современный и производительный вариант для Node.js-проектов. Он хорошо подходит для backend-обработки, генерации превью, динамического resize, API, серверных задач и больших пайплайнов.

Squoosh CLI проще для разового запуска. Чтобы использовать Sharp, обычно нужно писать JavaScript-код. Чтобы использовать Squoosh CLI, достаточно команды в терминале.

Выбор простой: если нужна утилита для папки изображений — Squoosh CLI удобен. Если нужна программная обработка внутри приложения — Sharp практичнее.

Squoosh CLI и ImageMagick

ImageMagick гораздо шире по возможностям. Он умеет конвертировать, резать, склеивать, рисовать, менять цветовые профили, работать с пакетами файлов, создавать миниатюры и выполнять множество операций, которые Squoosh CLI не покрывает.

Squoosh CLI уже по назначению, но проще для конкретной задачи web-сжатия через набор кодеков Squoosh. Если нужно сделать WebP и AVIF для сайта, Squoosh CLI выглядит понятнее. Если нужно обработать изображение любым возможным способом, ImageMagick сильнее.

Squoosh CLI и cwebp

cwebp — нативная утилита для создания WebP. Она точная, быстрая и хорошо документированная. Если нужен только WebP, cwebp часто будет более прямым выбором.

Squoosh CLI выигрывает универсальностью. В одной утилите есть не только WebP, но и MozJPEG, AVIF, OxiPNG, JPEG XL, WebP2, resize и quant. Если в проекте нужно несколько форматов, один интерфейс Squoosh CLI может быть удобнее набора отдельных программ.

Squoosh CLI и avifenc

avifenc лучше подходит тем, кто хочет глубоко контролировать AVIF. У него больше специализированных параметров, и он воспринимается как инструмент именно для AVIF-кодирования.

Squoosh CLI удобнее для тех, кто хочет не изучать отдельный AVIF-инструмент, а быстро получить .avif через знакомый подход Squoosh. Для массовой production-генерации AVIF логичнее рассматривать avifenc или Sharp, а для локальной подготовки и тестов Squoosh CLI остается удобным.

Squoosh CLI и imagemin

Imagemin хорошо смотрится в сборочных цепочках. Его используют через плагины и npm-инструменты, часто в связке с Gulp, Webpack или другими frontend-процессами. Он удобен, когда оптимизация изображений является частью build pipeline.

Squoosh CLI проще как самостоятельная команда. Его легче показать в инструкции: установить, запустить, получить результат. Но для сложной сборки imagemin может быть гибче, особенно если проект уже построен вокруг плагинов.

Squoosh CLI и OxiPNG

OxiPNG — узкоспециализированный инструмент для PNG. Он хорош, когда задача именно lossless-оптимизация PNG/APNG. Squoosh CLI использует OxiPNG как один из доступных кодеков, но не заменяет самостоятельный OxiPNG во всех сценариях.

Если нужно только оптимизировать PNG, отдельный OxiPNG проще и прямее. Если нужно в одном процессе делать PNG, WebP, AVIF и MozJPEG, Squoosh CLI удобнее.

Практические рекомендации по выбору

Squoosh CLI стоит брать, когда нужно быстро и воспроизводимо обработать папку изображений для сайта. Особенно если нужны WebP, AVIF, MozJPEG или OxiPNG без написания собственного скрипта.

Squoosh.app лучше выбрать, когда нужно вручную подобрать настройки для одного изображения. Там сразу видно, насколько меняется качество.

Sharp лучше выбрать, когда обработка изображений является частью приложения или сервера. Например, пользователь загружает фото, а система автоматически делает несколько размеров и форматов.

ImageMagick лучше выбрать, когда кроме сжатия нужны сложные операции: кадрирование, водяные знаки, склейка, наложение текста, пакетные трансформации, обработка нестандартных форматов.

cwebp и avifenc лучше выбрать, когда нужен глубокий контроль одного конкретного формата и высокая предсказуемость на больших объемах.

OxiPNG лучше выбрать, когда задача ограничена PNG и важно lossless-сжатие без лишних слоев.

Безопасность и приватность

Squoosh CLI работает локально. Файлы обрабатываются на компьютере пользователя, а не отправляются в браузерный онлайн-компрессор или внешний сервис. Это важное преимущество для рабочих материалов: скриншотов админок, закрытых документов, клиентских изображений, прототипов и контента до публикации.

Но локальная обработка не отменяет стандартную осторожность с npm-пакетами. Установка любого пакета через npm означает доверие к его коду и зависимостям. Для личного проекта это обычно не проблема, но в корпоративной среде лучше фиксировать версии, использовать lock-файлы, изолированные окружения и внутренние правила проверки зависимостей.

Также не стоит запускать Squoosh CLI поверх единственной папки с оригиналами без резервной копии. При массовой обработке безопаснее иметь отдельные директории:

raw/optimized/webp/avif/

Такая структура упрощает откат. Если результат не понравился, папку optimized можно удалить и повторить обработку с другими параметрами.

Производительность и качество

Squoosh CLI дает хороший баланс качества и удобства, но не является самым быстрым инструментом в своем классе. Для десятков или сотен изображений его скорости обычно достаточно. Для десятков тысяч файлов лучше тестировать заранее и сравнивать с Sharp, OxiPNG, cwebp или avifenc.

Качество зависит не только от кодека, но и от исходного изображения. Фотография с большим количеством деталей, текстур и шумов хуже переносит агрессивное сжатие. Скриншот интерфейса может прекрасно сжаться в WebP или PNG после quant. Баннер с градиентом может потребовать более высокого качества, чем карточка товара на белом фоне.

Практическая схема подбора такая:

  1. Взять 5–10 типичных изображений проекта.

  2. Проверить WebP с quality 70, 75, 80.

  3. Проверить AVIF через auto.

  4. Проверить MozJPEG для JPEG fallback.

  5. Для PNG-скриншотов проверить OxiPNG и WebP.

  6. Сравнить размер и визуальное качество.

  7. Выбрать параметры и только потом запускать на всей папке.

Squoosh CLI хорош тем, что после подбора настройки легко повторяются. Например, если для сайта выбрано правило фотографии в WebP 75, ширина 1280, команда остается стабильной:

npx @squoosh/cli --resize '{"enabled":true,"width":1280}' --webp '{"quality":75}' -d public/images source-images/*.jpg

Типичные ошибки при использовании

Первая ошибка — запуск команды без файла. Squoosh CLI ожидает <files...>. Если указать только кодек, программа не знает, что обрабатывать.

Неправильно:

npx @squoosh/cli --webp '{"quality":75}'

Правильно:

npx @squoosh/cli --webp '{"quality":75}' image.jpg

Вторая ошибка — неправильные кавычки в JSON-конфиге. Особенно часто это происходит в Windows, package.json и при копировании команд из статей. Если команда не запускается, сначала нужно проверить кавычки.

Третья ошибка — ожидание графического интерфейса. Squoosh CLI не открывает окно и не показывает изображение. Это не Squoosh.app, а терминальная программа.

Четвертая ошибка — обработка всей папки без теста. Не стоит сразу запускать агрессивные настройки на большом архиве. Сначала нужно проверить несколько файлов.

Пятая ошибка — слишком низкое качество. Файл может стать маленьким, но на изображении появятся блоки, грязь, полосы на градиентах, испорченный текст или замыленные детали.

Шестая ошибка — отсутствие resize. Иногда пользователь пытается сжать фотографию 6000 px шириной только через quality, хотя правильнее сначала уменьшить ее до реального размера отображения.

Седьмая ошибка — путаница между OxiPNG и --quant. OxiPNG оптимизирует PNG, а --quant уменьшает количество цветов. Это разные операции, и результат у них разный.

Восьмая ошибка — запуск на неподходящей версии Node.js. Если установка падает или команда ведет себя нестабильно, нужно проверить версию Node и при необходимости использовать Node 16.

Рабочие примеры команд

Для конвертации одной фотографии в WebP:

npx @squoosh/cli --webp '{"quality":75}' photo.jpg

Для создания WebP-версий всей папки:

npx @squoosh/cli --webp '{"quality":75}' -d webp ./images/*.jpg

Для сжатия JPEG через MozJPEG:

npx @squoosh/cli --mozjpeg '{"quality":82,"progressive":true}' -d jpeg ./images/*.jpg

Для создания AVIF через автооптимизацию:

npx @squoosh/cli --avif auto -d avif ./images/*.jpg

Для подготовки изображений шириной 1200 px:

npx @squoosh/cli --resize '{"enabled":true,"width":1200}' --webp '{"quality":75}' -d output ./images/*.jpg

Для оптимизации PNG-скриншотов:

npx @squoosh/cli --oxipng '{}' -d optimized ./screenshots/*.png

Для PNG с уменьшением палитры:

npx @squoosh/cli --quant '{"enabled":true,"numColors":256}' --oxipng '{}' -d optimized ./screenshots/*.png

Для сохранения нескольких вариантов с суффиксами:

npx @squoosh/cli --webp '{"quality":75}' -s "-q75" -d output photo.jpgnpx @squoosh/cli --webp '{"quality":85}' -s "-q85" -d output photo.jpg

Для более строгой автооптимизации WebP:

npx @squoosh/cli --optimizer-butteraugli-target 1.2 --max-optimizer-rounds 8 --webp auto -d output image.jpg

Для быстрой проверки версии:

squoosh-cli --version

Для просмотра справки:

squoosh-cli --help

Реальный сценарий: подготовка изображений для статьи

Представим, что есть папка raw с фотографиями и скриншотами для статьи. Фотографии слишком большие, скриншоты весят много, а на сайте нужно использовать WebP и оставить JPEG fallback.

Структура:

article/  raw/    cover.jpg    step-01.jpg    step-02.png    step-03.png  public/    img/

Сначала можно подготовить WebP для JPEG:

npx @squoosh/cli --resize '{"enabled":true,"width":1280}' --webp '{"quality":75}' -d public/img raw/*.jpg

Затем оптимизировать PNG-скриншоты:

npx @squoosh/cli --oxipng '{}' -d public/img raw/*.png

Если PNG-скриншоты подходят для WebP, можно сделать и WebP-версии:

npx @squoosh/cli --webp '{"quality":80}' -d public/img raw/*.png

После этого нужно открыть результат и проверить:

  • не испортился ли текст на скриншотах;

  • не появились ли полосы на градиентах;

  • не стала ли фотография слишком мыльной;

  • соответствует ли размер изображения реальной ширине блока на сайте;

  • не конфликтуют ли имена файлов.

Такой сценарий показывает сильную сторону Squoosh CLI: утилита не заменяет редактор, но хорошо выполняет механическую часть подготовки изображений.

Итоговая оценка

Squoosh CLI — удачная, но специфическая утилита. Ее ценность не в графическом удобстве, а в повторяемости. Она позволяет взять кодеки Squoosh и применять их из командной строки к одному файлу, списку файлов или целой папке.

Программа особенно хороша для web-разработчиков, технических редакторов и владельцев сайтов, которым нужно готовить изображения в WebP, AVIF, MozJPEG и PNG через OxiPNG. В ней есть нужный минимум: выходная папка, суффиксы, resize, quant, rotate, автооптимизация и набор web-кодеков.

Главные ограничения тоже понятны: проект не развивается активно, требует старого Node.js-окружения, не имеет GUI и не является самым быстрым вариантом для больших production-пайплайнов. Поэтому Squoosh CLI лучше рассматривать как практичный локальный инструмент, а не как универсальный стандарт для любой обработки изображений.

Если нужно быстро подготовить картинки для статьи, статического сайта, документации или небольшого каталога, Squoosh CLI справляется хорошо. Если нужно построить современную серверную систему обработки изображений, лучше выбирать Sharp, ImageMagick, OxiPNG, cwebp, avifenc или специализированные сборочные решения.

FAQ

Можно ли пользоваться Squoosh CLI без установки?

Да. Для разового запуска используется npx:

npx @squoosh/cli --webp '{"quality":75}' image.jpg

Это удобно, когда нужно проверить утилиту или обработать несколько файлов без глобальной установки.

Есть ли у Squoosh CLI графический интерфейс?

Нет. Squoosh CLI работает только через командную строку. Для визуальной работы есть Squoosh.app, где можно перетащить изображение, выбрать кодек, изменить качество и скачать результат.

Можно ли сжимать сразу папку изображений?

Да. В macOS и Linux можно использовать шаблоны вроде *.jpg:

npx @squoosh/cli --webp '{"quality":75}' -d output ./images/*.jpg

В Windows иногда удобнее использовать PowerShell-перебор файлов.

Подходит ли Squoosh CLI для AVIF?

Да, Squoosh CLI умеет создавать AVIF через --avif. Для первого теста удобно использовать auto:

npx @squoosh/cli --avif auto image.jpg

Для больших папок нужно учитывать, что AVIF может кодироваться медленнее WebP и MozJPEG.

Чем Squoosh CLI отличается от Squoosh.app?

Squoosh.app — графическое веб-приложение для ручной настройки и визуального сравнения. Squoosh CLI — командная утилита для повторяемой обработки файлов. Squoosh.app удобнее для одного изображения, Squoosh CLI — для папок и автоматизации.

Можно ли использовать Squoosh CLI в npm scripts?

Да. Команду можно сохранить в package.json:

{  "scripts": {    "images:webp": "squoosh-cli --webp '{"quality":75}' -d public/images source-images/*.jpg"  }}

После этого запуск выполняется через:

npm run images:webp

Нужно ли отправлять изображения на сервер?

Нет. Squoosh CLI работает локально на компьютере пользователя. Это удобно для рабочих файлов и изображений, которые нельзя загружать в сторонние онлайн-сервисы.

Почему команда с JSON-настройками не запускается?

Чаще всего проблема в кавычках и экранировании. В обычном терминале может работать:

npx @squoosh/cli --webp '{"quality":75}' image.jpg

А внутри package.json двойные кавычки нужно экранировать:

"squoosh-cli --webp '{"quality":75}' image.jpg"

Что лучше: auto или ручной quality?

auto удобен для быстрого подбора параметров. Ручной quality удобнее для стабильного рабочего процесса. Если нужно одинаковое правило для всех изображений проекта, лучше выбрать конкретное значение качества после тестов.

Можно ли использовать Squoosh CLI на новых версиях Node.js?

Лучше использовать Node 16 или изолированное окружение. Пакет рассчитан на старые версии Node.js, поэтому на новых ветках возможны ошибки установки и запуска.

Стоит ли использовать Squoosh CLI сегодня?

Да, если задача подходит под его сильные стороны: локальная пакетная обработка изображений, подготовка WebP/AVIF/JPEG/PNG для сайта, повторяемые команды и умеренные объемы файлов. Для новых крупных систем обработки изображений лучше рассмотреть Sharp, ImageMagick, OxiPNG, cwebp или avifenc.


Ваш адрес email не будет опубликован. Обязательные поля помечены *