Процесс разработки
Назначение
Этот гайд описывает типовой рабочий процесс при разработке внутри монорепозитория Nrgy.js.
Структура репозитория
packages/*: публикуемые пакеты.docs/*: проектная, пакетная и developer-документация.benchmarks/*: локальные benchmark-сценарии.
Основные команды
bash
npm installbash
npm run formatbash
npm run checkbash
npm run testbash
npm run buildОжидаемый процесс при изменении исходников
- Обновите исходный файл и colocated-тесты.
- Обновите colocated-документацию для измененного модуля.
- Обновите пакетный
README.md, если поменялся публичный API или способ использования. - Запустите
npm run check. - Для поведенческих изменений запустите
npm run test.
Процесс работы с документацией
- Документация модулей лежит рядом с исходными файлами.
- Пакетные обзоры живут в пакетных
README.md. - Русские переводы используют суффикс
.ru.md. - Файлы
index.tsдолжны документироваться через пакетные README, а не через отдельныеindex.md.
Процесс работы с сайтом документации
- Источником правды для продуктовой документации и материалов для контрибьюторов является дерево
docs/*, а неwebsite/docs/content/*. - Контент сайта в
website/docs/content/*иwebsite/docs/ru/content/*генерируется скриптом website/scripts/generate-content.mjs. - При изменении документации сначала обновляйте исходные файлы в
docs/*и держите синхронизированными соответствующие*.ru.md.
Команды для сайта
Запускайте команды из website/package.json:
bash
cd website
npm run devbash
cd website
npm run builddevзаново генерируетwebsite/docs/content/*и запускает локальный VitePress-сервер.buildзаново генерирует контент и проверяет, что сайт успешно собирается.
Когда нужно обновлять конфигурацию сайта
- Если меняется структура документации, обновляйте sidebar и navigation в website/docs/.vitepress/config.ts.
- Если документы перемещаются между разделами, проверяйте, что сгенерированные маршруты в
website/docs/content/docs/*по-прежнему совпадают со ссылками в конфигурации. - Если для сайта добавляются публичные ассеты, размещайте их в
docs/assets/*илиwebsite/docs/public/*в зависимости от того, должны ли они копироваться генератором контента.
Файлы, важные для релизов
- Корневой CHANGELOG.md фиксирует изменения уровня проекта.
- Пакетные
CHANGELOG.mdфиксируют изменения конкретных пакетов. - Названия пакетов и команды установки должны браться из актуальных
package.json.
Релизный процесс
Релизный процесс запускается из корня репозитория через скрипты в package.json и правила версионирования в lerna.json.
Подготовка релиза
- Убедитесь, что в рабочем дереве находятся только нужные изменения.
- Запустите
npm run check. - Запустите
npm run test. - Запустите
npm run build. - Проверьте, что документация и записи в changelog обновлены.
Версионирование
Сначала используйте dry run:
bash
npm run preview:new-versionСоздавайте версии только после проверки dry run:
bash
npm run new-versionpreview:new-versionзапускаетlerna version --dry-run.new-versionзапускаетlerna versionс включенными conventional commits.- Перед версионированием хук
preversionзапускаетnpm run check,npm run buildиnpm run test, а затем добавляет все изменения черезgit add --all.
Публикация
После того как пакеты получили версии и релизный коммит готов, публикуйте уже пакеты с новыми версиями:
bash
npm run new-publishnew-publishзапускаетlerna publish from-package.- Публикация пакетов опирается на версии, уже записанные в package manifest.
Релизные заметки и валидация
- После версионирования проверьте корневой
CHANGELOG.mdи пакетныеCHANGELOG.md. - Убедитесь, что сгенерированная документация и package README соответствуют публикуемому API.
- Если менялась документация сайта, перед публикацией соберите сайт через website/package.json.