1. YCLIENTS
  2. Маркетплейс интеграций
  3. Плагинизация
  4. Руководство по созданию Frontend плагина
  5. Сборка и локальная разработка
  6. Скрипт валидации артефактов сборки

Скрипт валидации артефактов сборки


Скрипт для валидации артефактов сборки плагина перед их использованием или деплоем.

Проблема

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

  • Предотвращения ошибок на этапе деплоя
  • Раннего обнаружения проблем со сборкой
  • Гарантии целостности артефактов

Решение

Скрипт автоматически проверяет:

  1. Наличие директории dist/
  2. Наличие и валидность общего dist/contract.json
  3. Соответствие директорий пакетов записям в contract.json
  4. Наличие и валидность manifest.json в каждом пакете
  5. Существование файлов, указанных в manifest.json, и соответствие их типов расширениям

Структура артефактов

dist/
├── contract.json                    # Общий контракт для всех пакетов
└── widget-masters-promo/            # Директория пакета
    ├── manifest.json                # Манифест пакета
    ├── widget-masters-promo.xxx.js  # JS файлы
    └── widget-masters-promo.xxx.css # CSS файлы

Использование

Через npm-скрипт (рекомендуется)

npm run validate-build-artifacts

Напрямую

node scripts/build-artifacts/validate-build-artifacts.js

Скрипт должен запускаться из корня проекта (portfolio-plugin/frontend).

Что проверяется

1. Проверка структуры директории

  • Наличие директории dist/
  • Что dist/ является директорией
  • Наличие файла dist/contract.json
  • Что contract.json является файлом и доступен для чтения

2. Валидация contract.json

  • Файл существует и доступен для чтения
  • Валидный JSON
  • Содержит обязательное поле packages с непустым объектом
  • Содержит обязательное поле plugin-slug (непустая строка)
  • Структура каждого пакета:
    • Поле application (строка)
    • Поле areas (непустой массив строк)

3. Валидация директорий пакетов

  • Все пакеты из contract.json имеют соответствующие директории в dist/
  • Каждая директория пакета действительно является директорией
  • Проверка лишних директорий (предупреждение, не ошибка)

4. Валидация manifest.json в каждом пакете

  • Файл manifest.json существует в каждом пакете
  • Файл доступен для чтения
  • Валидный JSON
  • Содержит ключ с именем пакета
  • Значение ключа — массив файлов
  • Валидация структуры каждого файла в массиве:
    • Поле name (непустая строка)
    • Поле type (строка: script или stylesheet)

5. Валидация файлов из manifest.json

  • Все файлы из manifest.json существуют в директории пакета
  • Каждый файл действительно является файлом (не директорией)
  • Расширения файлов соответствуют их типам:
    • .js для типа script
    • .css для типа stylesheet

Выходные коды

  • 0 - валидация прошла успешно
  • 1 - обнаружены ошибки валидации

Примеры использования

Интеграция в CI/CD

# После сборки
npm run build
npm run validate-build-artifacts

Локальная проверка

# Проверить артефакты после сборки
npm run build && npm run validate-build-artifacts
Предыдущая статья Пакет конфигураций сборки Vite
Следующая статья Скрипт для пересоздания package-lock.json на Linux