Skip to content

Сгенерированный вывод

Несколько пакетов pantoken генерируют файлы во время сборки — таблицу стилей, theme.json, встроенный модуль токенов. Чтобы репозиторий оставался чистым и выходные файлы честными, каждый пакет следует одной конвенции, а workspace-задача проверяет всё это.

Конвенция generated/

Каждый пакет, который создаёт артефакт сборки, записывает его в директорию на пакет (generated/), и больше ничего там не хранится. Одно правило в .gitignore охватывает их все:

txt
**/generated/

Таким образом ни один сгенерированный файл не коммитится — сборка воспроизводит его. Два вида выходных данных попадают туда:

  • Готовые к отправке статики — файлы, которые импортирует потребитель, такие как @pantoken/css's style.css или @pantoken/scss's tokens.scss. Карта пакета exports сохраняет публичный ключ ("./style.css"), но указывает на generated/, поэтому API потребителя никогда не меняется.
  • Промежуточные артефакты сборки — файлы, которые импортирует и бандлит сам пакет в dist, такие как вендоренный JSON у @pantoken/tokens. Они не публикуются сами по себе; они компилируются в состав.

Проверка выходных данных

@pantoken/validate-generated (приватный инструмент) запускается после сборки и проверяет три вещи:

  1. что каждый пакет-генератор действительно записал непустую директорию generated/,
  2. что CLI pantoken выпускает как минимум один файл для каждой поддерживаемой цели, и
  3. что ни одна сгенерированная таблица стилей не отклоняется от IR токенов — danglingReferences для автономных таблиц стилей и unknownReferences для мостов, которые лишь ссылаются на токены, определённые в другом месте.

Команды

sh
# Rebuild every package, regenerating all generated/ output.
pnpm run generate

# Rebuild, then run the validator.
pnpm run validate:generated

Валидатор также подключён в pnpm run ready, поэтому дрейф ловится в стандартном gate.