Хостинг и согласование форматов
Решение
Использовать логические адреса ресурсов, а выбор готового формата изображения и сжатия поручить nginx или Apache по заголовкам запроса. Генерировать конфигурацию хостинга при сборке.
Контекст
nuckty создаёт статический артефакт для nginx или Apache, в том числе для хостинга с доступом по FTP. Согласование форматов должно работать без обязательного сервера приложений или CDN.
Альтернативы
picture и source. HTML позволяет явно выбирать форматы изображений. Это полезно, когда автору нужен контроль через разметку, но правила выбора повторяются у каждого изображения.
CDN. CDN может согласовывать и преобразовывать ресурсы. Его можно использовать с сайтом на nuckty, но это дополнительный сервис, а не требование контракта сборки.
Сжатие при каждом запросе. Оно позволяет не хранить варианты, но повторяет работу, которую для статического артефакта можно выполнить один раз.
Аргумент
Растровые изображения используют логический адрес вида /_i<hash>. Сборка копирует оригинал и подготовленные варианты; сама она не кодирует AVIF и WebP. Сервер выбирает доступный формат по Accept и при необходимости возвращает оригинал.
Для сжатия сервер выбирает Brotli, Gzip или исходный файл по Accept-Encoding. Сгенерированные правила задают общую стратегию вместо её повторения в разметке каждой страницы.
Последствия
Apache нужны соответствующие модули и разрешение выполнять директивы сгенерированного .htaccess. Цена или категория услуги хостинга не подтверждает совместимость. nginx должен использовать сгенерированные правила.
.htaccess находится в outDir, nginx.conf — в .build. Расширение для локального просмотра создаёт собственную конфигурацию запуска и не воспроизводит автоматически пользовательские хуки или поведение Apache в продакшене.
Новый формат может потребовать изменений сбора изображений, конвертера и генератора конфигурации. Логические адреса сохраняют разметку страниц при изменении правил раздачи.