nuckty
EN
Все разделы →

Семейство репозиториев

Решение

Поддерживать nuckty как семейство проектов с общими правилами в nuckty-codestyle. Ядро отвечает за nuckty build; команды, возможности обработки контента и библиотеки блоков поставляются отдельными расширениями.

Контекст

Пользователям нужны разные возможности. Сайту без проверки HTML и публикации по FTP не нужны валидатор и клиент FTP в зависимостях ядра.

Альтернативы

Один пакет. Установку и выпуск проще согласовать, но необязательные зависимости входят в каждую установку.

Несколько пакетов в монорепозитории. Пакеты можно выпускать независимо; для этого нужен общий процесс версионирования и публикации.

Независимые репозитории без общих правил. Выпуски разделены, но язык, документация API и правила проверок могут расходиться.

Аргумент

Отдельные пакеты изолируют необязательные зависимости: basic-ftp относится к расширению FTP, vnu-jar — к валидации, sharp — к конвертации изображений. В ядре остаются инструменты сборки Markdown, CSS и JavaScript.

Общий контракт расширений предоставляет пять фасадов: pipeline, markdown, levels, commands и document. Пакет может использовать несколько фасадов. Локальные AGENTS.md ссылаются на общий свод правил и добавляют требования проекта.

Последствия

Проект сохраняет собственную историю и цикл выпуска, используя общий контракт. Если существующих фасадов достаточно, новую возможность можно добавить без изменения ядра; новый контракт ядра всё же требует его правки.

Публикация пакета не добавляет страницу документации автоматически. Страницу нужно включить в каталог расширений и карту сайта документации. Запланированные имена репозиториев не подтверждают, что публичные репозитории или пакеты уже опубликованы.