imagemin для автоматической оптимизации изображений
Настройка imagemin для автоматической оптимизации изображений
Преимущества использования imagemin
-
Автоматическая оптимизация
- Сжатие происходит автоматически перед каждым коммитом
- Не требует ручного вмешательства после настройки
- Гарантирует, что все изображения в репозитории оптимизированы
-
Гибкая настройка
- Поддержка различных форматов (PNG, JPEG, GIF, SVG)
- Настраиваемый уровень сжатия
- Возможность сохранения метаданных
-
Существенное уменьшение размера
- Снижение веса изображений на 40-70% без заметной потери качества
- Уменьшение времени загрузки страниц
- Экономия трафика пользователей
-
Интеграция с рабочим процессом
- Работает как часть процесса git
- Легко встраивается в CI/CD пайплайны
- Совместим с другими инструментами оптимизации
Установка
- Установите необходимые пакеты:
# Установка основных зависимостей
npm install --save-dev husky lint-staged imagemin
# Установка плагинов для разных форматов
npm install --save-dev imagemin-mozjpeg imagemin-pngquant imagemin-gifsicle imagemin-svgo
- Инициализация husky:
# Инициализация husky
npx husky install
# Создание хука pre-commit
npx husky add .husky/pre-commit "npx lint-staged"
Настройка
- Добавьте конфигурацию lint-staged в package.json:
{
"lint-staged": {
"*.{png,jpeg,jpg,gif}": ["imagemin-lint-staged"],
"*.svg": ["imagemin-lint-staged"]
}
}
- Создайте файл конфигурации imagemin (.imageminrc.js):
module.exports = {
plugins: [
["mozjpeg", { quality: 80 }],
["pngquant", { quality: [0.65, 0.8] }],
["gifsicle", { optimizationLevel: 3 }],
["svgo", {
plugins: [
{
name: "preset-default",
params: {
overrides: {
removeViewBox: false,
removeUnknownsAndDefaults: false
}
}
}
]
}]
]
}
Использование
После настройки imagemin будет автоматически обрабатывать все изображения, которые вы добавляете в git:
# Добавить изображения в git
git add images/example.png
# При выполнении коммита изображения будут автоматически оптимизированы
git commit -m "Add optimized images"
Ручное использование
Вы также можете оптимизировать изображения вручную:
- Создайте скрипт в package.json:
{
"scripts": {
"optimize-images": "imagemin 'images/**/*.{jpg,png,gif,svg}' --out-dir=optimized"
}
}
- Запустите оптимизацию:
npm run optimize-images
Мониторинг и отладка
- Добавьте вывод информации о сжатии:
// .imageminrc.js
module.exports = {
verbose: true,
plugins: [
// ... конфигурация плагинов
]
}
- Проверка размера до и после сжатия:
# Установка пакета для анализа размера
npm install --save-dev image-size
# Добавьте скрипт в package.json
{
"scripts": {
"analyze-images": "node scripts/analyze-images.js"
}
}