Документационный сайт на @rigbyhost/karui (без React), с Tailwind CSS v4 и визуальным стилем в духе shadcn/ui на zinc-палитре.
Структура документации: categories + guides + reference, как в крупных framework docs.
Сайт работает на самом фреймворке — это одновременно и документация, и живой пример.
@rigbyhost/karui5.x — SSR + file-based routingvitetailwindcss@4+@tailwindcss/vite- Двуязычные страницы: English (
/en) и Русский (/ru) - Автоопределение языка на
/черезnavigator.languages/navigator.language
npm install
npm run dev # dev-сервер
npm run check # tsc --noEmit
npm run build # клиентская и серверная сборки
npm run build:pages # экспорт для GitHub Pages (dist/pages)
npm run prerender # экспорт через karui prerender (dist/static)
npm run start # production-серверsrc/app.tsx— bootstrap сайтаsrc/layout.tsx— общий layoutsrc/content/docs-types.ts— типы контентаsrc/content/docs.en.ts/docs.ru.ts— сам контентsrc/content/docs.ts— выборка и навигация по контентуsrc/content/i18n.ts— языки и словариsrc/content/site.ts— домен и внешние ссылкиsrc/pages/*— маршрутыsrc/styles.css— zinc-тема и UI-слои
Fundamentals: introduction, installation, project-structureGuides: routing, data-loading, mutations, rendering, jsx-runtime, metadata, error-handling, static-exportReference: cli, api, migration-5
Чтобы добавить страницу, допишите объект в docs.en.ts и docs.ru.ts. Маршрут,
навигация «назад/вперёд», список в сайдбаре и пререндер подхватят её сами —
staticPaths() берёт слаги из того же источника.
Все [lang]-маршруты экспортируют staticPaths(), поэтому и karui prerender,
и scripts/export-pages.mjs строят список страниц из одного источника, а не из
хардкода или парсинга HTML.
scripts/export-pages.mjs остаётся отдельным скриптом, потому что для GitHub
Pages дополнительно нужны base-path переписывание ссылок и языковой редирект на
/. Всё остальное он берёт из фреймворка.
Workflow: .github/workflows/deploy-pages.yml.
- На
pushвmainвыполняется статический экспорт вdist/pages. - Домен:
karui.rigby-foundation.org(файлCNAME). - Base path всегда
/(режим custom domain only).
При смене домена правьте вместе: CNAME, SITE_ORIGIN в src/content/site.ts
и DNS-запись. Иначе canonical-ссылки будут указывать на несуществующий адрес.