Об этом проекте
nfuwari — это репозиторий исходного кода блога Lucius7 (blog.lucius7.cn), персонального сайта, созданного на базе темы Fuwari для Astro и развернутого на GitHub Pages.
Контент на китайском и английском языках разделен. Посты находятся в src/content/posts/zh/ и src/content/posts/en/, каждый из которых имеет собственные списки, подсчеты категорий и тегов, навигацию по постам, RSS-ленту и индекс поиска, а корневой URL перенаправляет на /zh/. Строки интерфейса находятся в src/i18n/, страницы «О себе» для каждого языка расположены в src/content/spec/, а переводы могут быть сопоставлены по идентичным относительным путям или связаны через translationKey, при этом переключатель языков в случае отсутствия перевода возвращает на главную страницу целевого языка.
Написание контента основано на Markdown. Скрипт-генератор (pnpm new-post zh/name или pnpm new-post en/name) создает черновик с настройками frontmatter по умолчанию, включая lang: zh_CN или lang: en; по умолчанию для постов установлено draft: true, и они видны только при локальной разработке, так как сборки для продакшена исключают черновики. Поля frontmatter и валидация определены в src/content/config.ts. Математические формулы поддерживаются с помощью remark-math и rehype-katex, а стили и шрифты поставляются вместе с сайтом.
Читателям доступны светлая и темная темы, категории, теги, поиск Pagefind, а также вывод RSS и sitemap. Идентификация сайта, оттенок темы, профиль, навигация, социальные ссылки и лицензия постов настраиваются в src/config.ts, в то время как баннер, аватар (эндпоинт аватаров Tencent QQ), иконка сайта и ссылка на регистрацию в футере также настраиваются там или через public/ и src/assets/.
Две опциональные функции панели управления считывают данные из публичного API автора OJFlare: виджет в боковой панели, отображающий три последних принятых решения на Codeforces/AtCoder, и календарь AC-вкладов на страницах «О себе», который удаляет дубликаты истории принятых решений по problemId, использует даты Asia/Taipei (UTC+8) и предлагает фильтры по году и платформе. Обе функции используют один цикл опроса, обновляются каждые пять минут, пока страница видима, сохраняют ранее загруженные записи при сбое обновления и могут быть отключены в конфигурации; сборка блога не зависит от доступности API.
Инструментарий включает pnpm dev для предварительного просмотра с черновиками, pnpm lint, pnpm check для проверки Astro/Svelte/TypeScript, pnpm build (который также создает индекс Pagefind) и pnpm preview для собранного сайта. Тестовые скрипты проверяют маршрутизацию языков, виджет активности MacFlare и парсинг OJFlare без обращения к живым сервисам. GitHub Actions выполняет проверку стилей, проверку типов, сборку и развертывание при обновлениях в ветке main, публикуя сайт на GitHub Pages с использованием кастомного домена через Alibaba Cloud ESA, указанного в файле CNAME. Dependabot еженедельно проверяет npm и GitHub Actions. Руководства по написанию текстов, двуязычному контенту, LaTeX, развертыванию и обзору зависимостей находятся в docs/, а код проекта сохраняет лицензию MIT и упоминание первоисточника.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.