Монорепо состоит из двух частей:
configurator-main- библиотека@univer/configuratorexample-main- пример приложения, которое использует библиотеку
- Node.js LTS (рекомендуется 20+)
- npm 10+
Проверка версий:
node -v
npm -vЗапускать из корня репозитория:
npm run install:all
npm run build:configuratornpm run devЕсли в configurator-main не было изменений и вообще нужно только поднять пример приложения:
npm run dev:nobuildnpm run build
npm run previewИли одной командой:
npm run build:previewАльтернатива: раздать папку dist через любой статический сервер (например, python -m http.server 3000 -d dist или npx --yes serve -s dist).
Проект использует Jest для модульного тестирования.
cd configurator-main
# Запустить все тесты
npm test
# Запустить тесты в режиме наблюдения
npm run test:watch
# Сгенерировать отчет о покрытии
npm run test:coverageОтчеты о покрытии генерируются в директории configurator-main/coverage/.
Откройте coverage/lcov-report/index.html в браузере для просмотра HTML-отчета.
Проект использует GitHub Actions для непрерывной интеграции. Pipeline запускается автоматически при:
- Каждом push в ветки
main,masterилиdevelop - Любом pull request (независимо от целевой ветки)
- Тестирование: Запускает все модульные тесты с генерацией покрытия
- Проверка типов: Валидирует TypeScript типы в библиотеке
- Сборка: Собирает библиотеку и пример приложения
- Артефакты: Сохраняет результаты сборки на 7 дней
Проверьте вкладку Actions для просмотра статуса последних запусков CI.
Причина: зависимости не установлены в одной из папок.
Решение:
npm run install:all
npm run build:configuratorПричина: библиотека не собрана.
Решение:
npm run build:configuratorПричина: поврежденный кэш/lock-файл/node_modules.
Решение:
npx --yes rimraf "configurator-main/node_modules" "configurator-main/package-lock.json" "example-main/node_modules" "example-main/package-lock.json"
npm run install:allПричина: порт dev/preview уже используется.
Решение:
npm --prefix ./example-main run dev -- --port 5174