CLI, CDN и удалённые изображения
Рецепты, которым не нужен плагин сборщика: командная строка, готовый проект, который не хочется менять, CDN и удалённые изображения и проверка для CI. Выбрать рецепт поможет страница Выбор способа.
Везде нужен sharp, а для вывода ThumbHash ещё и thumbhash:
npm install -D sharp thumbhashПлейсхолдеры для готового проекта
Когда применять. Проект уже написан. Нужны размытия без добавления плагина и без правки шаблонов вручную — например, со сборщиком, который не Vite.
npx vue-image-kit placeholders --dry-run
npx vue-image-kit placeholdersОдин раз зарегистрируйте манифест, который она пишет:
import { VImageKitPlugin } from '@macrulez/vue-image-kit'
import placeholders from './image-placeholders'
app.use(VImageKitPlugin, { placeholders })Что вы получите. Каждый <VImage> со статически известным изображением получает плейсхолдер и размер. Изображения из public/, с CDN или другого хоста попадают в манифест; изображения, импортированные в компонент, записываются в их шаблон как пропсы. --dry-run сначала показывает все изменения, а файл с незакоммиченными изменениями git никогда не правится. См. Плейсхолдеры для готовой вёрстки.
Изображения, путь которых приходит из данных
Когда применять. src собирается во время выполнения, и сканирование шаблонов его не находит.
npx vue-image-kit placeholders --dir public/images --dir content/photos=https://cdn.example.com/photosЧто вы получите. Каждое изображение из папок добавляется в манифест под тем URL, по которому оно отдаётся: по пути от public/ или с urlPrefix, указанным после =. Запускайте команду заново, когда изображения меняются; неизменённые файлы берутся из кеша. Чтобы это делалось при каждой сборке само, используйте рецепт для Vite или Nuxt.
CDN и удалённые изображения
Когда применять. Изображения лежат на CDN или другом хосте.
npx vue-image-kit placeholders --remote --hosts res.cloudinary.com --limit 200
npx vue-image-kit placeholders --url https://cdn.example.com/hero.jpg--remoteдополнительно скачивает CDN- и удалённые изображения, найденные при сканировании. По умолчанию выключено: в проекте таких изображений могут быть тысячи.--hostsограничивает набор хостами, а--limitзадаёт, сколько изображений скачать за один запуск, — так большой проект можно обработать частями.--urlдобавляет одно названное изображение и скачивает его без--remote— само указание адреса и есть согласие.
Что вы получите. У распознаваемого CDN запрашивается версия шириной 128px, а настоящий размер читается из первых 64 КБ оригинала. Остальные хосты скачиваются целиком, не больше --max-bytes. Скачанные изображения кешируются до --refresh-remote.
Другой вид плейсхолдера и настройка
Когда применять. Нужен ThumbHash, только цвет или другая степень детализации.
npx vue-image-kit placeholders --mode thumbhash
npx vue-image-kit placeholders --mode color
npx vue-image-kit placeholders --components 6x4 --sample 128 --color average--mode выбирает, что хранит каждая запись. --components, --sample и --color описаны в разделе Настройка хешей.
Замена имеющихся плейсхолдеров
Когда применять. В шаблонах есть написанные вручную или устаревшие плейсхолдеры, и их нужно пересчитать все.
npx vue-image-kit placeholders --replace --dry-runЧто вы получите. Статические атрибуты hazehash, blurhash, thumbhash, placeholder, placeholder-color и placeholder-mode заменяются плейсхолдером выбранного --mode. Значения, привязанные к выражению, и проп image не трогаются и перечисляются в сводке.
Адаптивные варианты без плагина
Когда применять. Нужны уменьшенные файлы WebP/AVIF, которые делает команда — из скрипта или в CI.
npx vue-image-kit generate \
--input ./src/images \
--output ./public/images \
--widths 400,800,1200 \
--formats jpg,webp,avif \
--manifest ./src/assets/images.tsЧто вы получите. Уменьшенные файлы и TypeScript-манифест. --watch перезапускает команду при изменениях, а --incremental пропускает неизменённые файлы. См. Генерация изображений.
Общий файл конфигурации
Когда применять. Несколько команд, скриптов и плагин Vite должны использовать одни и те же настройки.
// vue-image-kit.config.js
export default {
input: './src/images',
output: './public/images',
widths: [400, 800, 1200],
placeholders: {
mode: 'blurhash',
dirs: ['public/images'],
tuning: { components: [4, 3] },
},
}Что вы получите. Каждая команда читает из файла свою секцию, а флаги командной строки важнее файла.
Отчёт об использовании в CI
Когда применять. Нужно узнать, как используются изображения, и ронять сборку, если чего-то не хватает.
npx vue-image-kit scan
npx vue-image-kit scan --fail-on missing-alt,missing-fileЧто вы получите. Сводку по каждому <VImage>, v-lazy-img и вызову composable, откуда берётся каждое изображение, и предупреждения: нет alt, нет размера, нет плейсхолдера. --fail-on заставляет команду завершиться с кодом 1, если найдено одно из перечисленных предупреждений. См. Отчёт об использовании.
Фоны через v-lazy-img и useBackgroundImage
Когда применять. Изображения задаются как CSS-фоны, а не через <VImage>.
npx vue-image-kit placeholdersЧто вы получите. С зарегистрированным манифестом v-lazy-img и useBackgroundImage() показывают размытие и доминирующий цвет записи, пока грузится изображение, а команда заполняет манифест для их использований со статическим src из public/, с CDN или другого хоста.