这个项目能做什么
nfuwari 是 Lucius7's Blog (blog.lucius7.cn) 的源码仓库,该个人网站基于 Astro 的 Fuwari 主题构建,并部署在 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 中配置,而横幅图片、头像(使用腾讯 QQ 头像接口)、网站图标和页脚备案链接也可在该文件中或通过 public/ 和 src/assets/ 进行配置。
两个可选的仪表盘功能通过读取作者的 OJFlare 公开 API 实现:一个是显示最近三条被接受的 Codeforces/AtCoder 提交的侧边栏组件,另一个是关于页面上的 AC 贡献日历(通过 problemId 对接受历史进行去重,使用 Asia/Taipei (UTC+8) 日期,并提供年份和平台筛选)。两者共用一个轮询循环,在页面可见时每五分钟刷新一次,若刷新失败则保留之前加载的记录,且可在配置中禁用;博客的构建不依赖于该 API 的可访问性。
工具链包括用于包含草稿预览的 pnpm dev、pnpm lint、用于 Astro/Svelte/TypeScript 检查的 pnpm check、pnpm build(同时生成 Pagefind 索引)以及用于构建后预览的 pnpm preview。测试脚本在不接触实时服务的情况下,对语言路由、MacFlare 活动组件和 OJFlare 解析进行测试。GitHub Actions 在 main 分支更新时运行样式检查、类型检查、构建和部署,发布至 GitHub Pages,自定义域名通过 Alibaba Cloud ESA 提供服务并在 CNAME 文件中记录。Dependabot 每周检查 npm 和 GitHub Actions。关于写作、双语内容、LaTeX、部署和依赖审查的指南位于 docs/ 目录下,项目代码保留 MIT 许可证及上游署名。
评论
0 评分人数达到10人后显示
登录后参与讨论。