Shoa Lin 的个人主页源码,部署在 www.bydziwen.top。
- 框架:Astro 7 静态输出,部署到 GitHub Pages(
.github/workflows/deploy-pages.yml,只在 push 到main时构建并发布)。 - 语言:简体中文为默认语言(无 URL 前缀),另有 en、ja、ko、th、fr、de、vi 七种语言(带前缀)。界面文案在
src/i18n/*.json,八份字典的键必须一致。 - 内容:
src/content/blog、src/content/favorites、src/content/food,按<locale>/<slug>.md组织;公开文章要求八种语言齐全并标为reviewed。流程见.codex/skills/translate-blog-publish/SKILL.md,术语见docs/content/translation-glossary.md。 - 漫画:
src/comics/<id>/保存作者的完整 HTML 和comic.json,构建时套上站点页头页脚;用npm run comic -- add <file.html> --id <slug>发布,详见src/comics/README.md。 - RSS:每种语言一个全文订阅源(
/rss.xml、/<locale>/rss.xml,最近 20 篇文章),由src/lib/feed.ts生成;页脚的 RSS 链接通向订阅说明页/subscribe。Folo 认领订阅源时,把 Folo 给出的 feedId 和 userId 填进src/data/folo.ts,上线后回 Folo 点验证,通过后可删除。条目的 guid 是带末尾斜杠的文章地址,不要改,改了订阅者会把旧文当新文再收一遍。 - 页脚访问计数:
workers/site-visits/的 Cloudflare Worker,手动用 wrangler 部署;站点通过仓库变量PUBLIC_VISIT_API_URL接入。
npm ci # 安装依赖(Node 24,见 .nvmrc)
npm run dev # 本地开发
npm run build # 构建到 dist/
npm run test:unit # 单元测试(含内容门禁,会多次触发构建)
npm run verify # CI 同款完整校验:类型检查、单测、内容审计、构建、SEO/链接审计、Playwright e2e
node scripts/check-content-completeness.mjs # 八语完整性
node scripts/check-translation-parity.mjs # 译文结构对照
node scripts/run-lighthouse.mjs # 本地性能基线(需先 npm run preview 在 4321 端口)
npm run comic -- add <file.html> --id <slug> # 发布一部漫画(自托管字体、生成封面)
npm run comic -- check # 校验所有漫画- 写
src/content/blog/zh/<slug>.md,frontmatter 字段见src/content.config.ts。 - 补齐其余七种语言,跑完整性与结构对照脚本。
- 在
tests/content-migration.test.mjs与tests/article-routes.test.mjs的审批清单登记该 slug。 - 本地
npm run verify通过后开 PR。