Перейти к содержимому
Загрузка статьи…

Трек Вынос фронтовых библиотек в монорепу и автопубликация в npm через release-please · Модуль №2

← Обзор трека

Проверка совместимости ​

Что проверяет CI ​

В работающем примере TP-Prepare addon имеет обычную dependency на core: установка addon подтягивает core. В CDD связь другая: optional peer у Zustand позволяет использовать ./vanilla без React; React нужен для React-интеграции. Локальная devDependency нужна, чтобы тестировать именно текущий React из монорепы. Каскад версий не должен превращать optional peer в обязательную dependency.

До публикации CI выполняет следующие проверки и на feature PR, и на release PR:

ПроверкаКакую проблему обнаруживает
Сборка BunОшибки сборки и отсутствующие выходные файлы
Проверка типовНесовместимые типы и публичные декларации
Runtime-интеграция React/Zustand из workspaceРабота хуков, подписок, обновления состояния и повторного рендера
Установка собранных tarball в чистый проектОшибки exports, состава архива, semver и скрытую зависимость от файлов монорепозитория
Отдельный сценарий ./vanilla без ReactВозможность использовать vanilla API без установки optional peer

Проверка архивов в чистом проекте ​

  1. Подготовить архивы через bun pm pack в каталоге каждого собранного пакета.
  2. В отдельном каталоге вне workspace установить оба локальных архива, чтобы проверка новой связки до публикации не подтянула прежний React из registry.
  3. Проверить метаданные архивов, импорты и типы.
  4. Запустить runtime-сценарий: компонент читает store через хук, изменение store обновляет отображение.
  5. Отдельно проверить vanilla без React.

Release PR должен пройти эти проверки с окончательными версиями и диапазонами.

Успешная сборка не доказывает работу хуков. Если сборка проходит, а runtime сломан, соответствующий интеграционный тест должен остановить выпуск. Автоматическая замена peer-диапазона также не гарантирует совместимость с breaking-версией: это изменение метаданных, которое требует проверки поведения. После обновления библиотек собственные тесты потребителя сохраняются — в них могут быть сценарии, которых нет в монорепозитории.