- удалён concat-md.js: вместо единого RULES.md теперь llms.txt
- добавлен generate-llms.ts: собирает llms.txt из sidebar config, копирует
.md-файлы для отдачи LLM и упаковывает ZIP-архивы по локалям
- добавлен корневой /llms.txt как роутер на /ru/llms.txt и /en/llms.txt
- добавлен манифест /manifest.json со ссылками и версией сборки
- добавлен лендинг docs/index.md (layout: false) с автоопределением
языка, переключателями языка и темы
- английская локаль временно заблокирована: карточки как заглушки,
ссылка на /en/ в роутере без href
- добавлены поля llmsBlockquote и llmsContext в локали для
технодокументационного описания в llms.txt
- разделены VitePress-локали: root (только лендинг), ru (/ru/), en (/en/)
- добавлен srcExclude: ['public/**'] чтобы VitePress не рендерил
сгенерированные .md как страницы
- добавлен Vite-плагин для отдачи .txt и .md с charset=utf-8
- добавлена секция в Caddyfile для текстовых файлов
- BUILD_VERSION пробрасывается из Gitea CI через docker --build-arg
и подставляется в лендинг через Vite define
- Dockerfile: установка zip, npm run llms перед npm run build
- обновлены внутренние ссылки в docs/ru/**/*.md на префикс /ru/
- обновлены AGENTS.md и CONTRIBUTING.md под новый процесс
- README/README_RU генерируются из docs/{lang}/index.md, остаются в репо
1.7 KiB
1.7 KiB
title
| title |
|---|
| Добавление страницы |
Добавление страницы
Как добавить новую страницу в проект по стандартам этого руководства.
Что нужно знать
Страница в проекте — это два файла: экран в src/screens/ (вся логика, стили, зависимости) и page.tsx в src/app/ (точка входа для роутинга Next.js). Экран генерируется из шаблона, page.tsx создаётся вручную.
Порядок действий
-
Сгенерировать экран из шаблона
screenв папкуsrc/screens/. -
Заполнить экран логикой и стилями.
-
Создать
page.tsxв нужном маршрутеsrc/app/. Файл страницы должен быть тонким — толькоmetadataи рендер экрана. Никакой логики, стилей и хуков вpage.tsxне размещается — всё это живёт в экране.
Правила
- Ручное создание файловой структуры экрана запрещено — только генерация из шаблона.
- Логика, стили и зависимости размещаются в экране, не в
page.tsx. - Каждая страница содержит
metadataсtitleиdescription.
Примеры page.tsx и metadata — Page-level компоненты.