Разработка
Нужны Node.js ≥ 24 и pnpm.
pnpm installpnpm build # собрать веб-интерфейс и CLI (packages/cli/dist)pnpm start # http://127.0.0.1:3000, данные в data/tsmc.dbРазработка: pnpm dev (API на :3000, интерфейс с hot reload на http://localhost:5173).
Проверки:
pnpm typecheckpnpm test # unit- и API-тесты (vitest)pnpm e2e # сборка интерфейса и браузерные тесты (Playwright) на демо-данныхДля pnpm e2e нужен браузер: pnpm --filter @tsmc/e2e exec playwright install chromium или установленный
Chrome/Edge через PW_CHANNEL=chrome / PW_CHANNEL=msedge.
CI (GitHub Actions, .github/workflows/ci.yml) на каждый push и PR запускает проверку типов, тесты,
браузерные тесты и собирает Docker-образ с проверкой запуска. Из main образ публикуется как
ghcr.io/<владелец>/tsmc:latest, из тегов v* — с номером версии. Отчёт упавших браузерных тестов
сохраняется артефактом playwright-report.
При первом открытии интерфейс предложит создать администратора.
Порядок работы с ветками
Заголовок раздела «Порядок работы с ветками»Каждый этап разрабатывается в отдельной ветке stage-N-<name>, создаваемой от актуального main.
По завершении этапа ветка вливается в main через --no-ff, поэтому граница каждого этапа видна в истории.
Ветки этапов не удаляются.
Документация
Заголовок раздела «Документация»Этот сайт — пакет packages/site (Astro Starlight): страницы на русском лежат в src/content/docs, на
английском — в src/content/docs/en. Правка документации идёт в том же pull request, что и изменение кода.
pnpm --filter @tsmc/site dev # http://localhost:4321 с перезагрузкой при правкеpnpm --filter @tsmc/site build # сборка в packages/site/distСправочники собираются из кода скриптом scripts/generate.ts перед каждой сборкой: маршруты API с ролями и
полями запроса, справка CLI и список изменений по слитым pull request. Сборка падает, если:
- у маршрута API нет описания в
src/api-docs.ts(или описан маршрут, которого уже нет); - переменная
TSMC_*, которую читает сервер или CLI, не описана в Переменные окружения; - ссылка между страницами ведёт в никуда.
Workflow .github/workflows/docs.yml собирает сайт на каждом pull request и публикует его на Cloudflare Pages:
main — как сам сайт, pull request — как превью своей ветки (нужны секреты CLOUDFLARE_API_TOKEN и
CLOUDFLARE_ACCOUNT_ID).
Публикация на Cloudflare Pages
Заголовок раздела «Публикация на Cloudflare Pages»- Войдите на dash.cloudflare.com (бесплатного тарифа достаточно).
- ID аккаунта: на главной странице панели, в меню аккаунта «Copy account ID» или в адресе
dash.cloudflare.com/<ID аккаунта>/…— строка из 32 символов. - API-токен: значок профиля → My Profile → API Tokens → Create Token → Create Custom Token. Имя — например,
tsmc docs from GitHub; Permissions:Account·Cloudflare Pages·Edit; Account Resources:Include· ваш аккаунт. Continue to summary → Create Token, скопируйте токен — он показывается один раз. - Секреты репозитория: GitHub → Settings → Secrets and variables → Actions → New repository secret:
CLOUDFLARE_API_TOKEN(токен) иCLOUDFLARE_ACCOUNT_ID(ID аккаунта). - Первая публикация: Actions → Docs → Run workflow на
main(или следующее слияние вmain). Проектtsmc-docsсоздаётся сам, адрес сайта — в выводе шага «Publish to Cloudflare Pages», обычноhttps://tsmc-docs.pages.dev(если имя занято, Cloudflare добавит к нему суффикс). - Адрес сайта: Settings → Secrets and variables → Actions → Variables → New repository variable
DOCS_URLс этим адресом — по нему строятся канонические ссылки и карта сайта.
Превью pull request — по адресу https://<ветка>.tsmc-docs.pages.dev. Чтобы сайт видели только свои, его можно
закрыть входом через Cloudflare Access (Zero Trust → Access → Applications), бесплатно для небольших команд.
Главная страница сайта — визитка продукта (src/landing, тексты на двух языках в content.ts). Скриншоты на ней —
настоящий интерфейс на демо-данных; после заметных изменений интерфейса их снимают заново:
pnpm build && pnpm --filter @tsmc/e2e screens # PW_CHANNEL=msedge|chrome — установленный браузерСкрипт сам поднимает демо-сервер и кладёт снимки в packages/site/public/screens/{ru,en}.
Astro загружает нативные модули (компилятор, разбор Markdown). На Windows их может заблокировать политика контроля
приложений (Smart App Control) или не найтись Microsoft Visual C++ Redistributable (x64) — тогда сайт локально не
соберётся. Его всегда собирает CI: готовую сборку можно скачать из запуска workflow (артефакт docs-site).