---
type: JS Module
title: main.mjs
resource: npm/rules/image-avif/avif_generation/main.mjs
docgen:
  crc: 7f9f2d4a
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
  score: 100
  issues: judge:inaccurate:0.99
  judgeModel: openai-codex/gpt-5.4-mini
---

## Огляд

Огляд
Цей модуль відповідає за ініціалізацію та виконання процесу конвертації растрових зображень у проєкті на AVIF-двійники, як описано у `package.json`. Публічна функція `main` запускає сканування всіх пакетів монорепозиторію, що призводить до заміни посилань у файлах Vue та HTML на оптимізовані версії. Крім того, він очищає від неіспользуних AVIF-файлів, використовуючи кешування даних протягом одного прогону.

## Поведінка

1. main виконує повний цикл перевірки та оптимізації зображень AVIF.
2. Перед початком роботи перевіряється наявність будь-яких посилань на растрове зображення у файлах Vue або HTML. Якщо таких посилань немає, операція припиняється, оскільки немає чого оптимізувати.
3. Запускається генерація AVIF-двійників з використанням інструмента `@nitra/minify-image`.
4. Ініціалізуються лічильники для обліку успішно переписаних посилань, змін у файлах та невдалих спроб заміни.
5. Проводиться сканування всіх пакетів у монорепозиторії. Для кожного пакета визначається, чи активовано вимкнення перевірки (`disable-avif: true`) у `package.json`.
6. Якщо перевірка AVIF-імпортів не вимкнена, виконується аналіз файлів Vue та HTML у пакеті. Знайдені растрові посилання замінюються на посилання з суфіксом `.avif`, якщо відповідний AVIF-двійник існує на диску. У разі невдачі заміни фіксується звіт про помилку, а сам файл може бути змінений. Після обробки файлу він записується на диск. Збір до списку шляхів, що використовуються, ведеться для AVIF-двійників.
7. Паралельно з аналізом пакетів, збирається список усіх абсолютних коренів пакетів, де перевірка була вимкнена.
8. Після аналізу всіх пакетів, збирається список "сиріт" — AVIF-файлів, які знаходяться у репозиторії, але на які немає жодного активного посилання у `.vue` або `.html` файлах. Ці сироти видаляються, за винятком AVIF-файлів у пакетах, де перевірка була вимкнена, та AVIF-файлів, які мають живі посилання.
9. Повертається загальний звіт про кількість виконаних операцій (заміна посилань, видалення сиріт, невдачі заміни).

## Публічний API

main — генерує зображення у форматі AVIF, автоматично замінює посилання на растрове зображення у файлах `.vue` та `.html`, а також очищує від непідключених файлів AVIF.

## Гарантії поведінки

- Кешує результати в межах одного прогону.
