Aeria
GitHub
改 · 3.31

改官网

最后核对 2026-10-08对应提交 eb5b613依据 README.md · package.json · astro.config.mjs · deploy-files.mjs · outline.ts · [...slug].astro · content.config.ts · site_shots.py · site_check.py · site_icons.py · ui_fixture_server.py · test_site.py

你正在看的这个站在仓库的 site 目录里:Astro 生成的纯静态页。这一篇说内容放在哪、三个区各有什么规矩、截图和小演示从哪来、提交之前跑什么。

本页 8 节
  1. 跑起来
  2. 内容放在哪
  3. 三个区的规矩
  4. 组件
  5. 截图和小演示从哪来
  6. 提交之前
  7. 上线
  8. 没做到的

跑起来

cd site && npm ci
npm run dev
npm run build

npm run dev 是开发服务器,改了马上看到;npm run build 是正式构建,产物在 site/dist/,最后一步用 Pagefind 生成搜索索引。要 Node 22.12 以上。

内容放在哪

三个区的规矩

构建时查,不合规矩构建失败:

侧注用 <Note kind="why">(为什么)或 <Note kind="mind">(注意),和它注的那一段一起包进 <Annotated>,侧注写在前面;一页最多三条。

组件

截图和小演示从哪来

提交之前

在 site/ 里构建:

npm run build

再在仓库根目录:

.venv/bin/python -m pytest tests/test_site.py
.venv/bin/python scripts/site_check.py

scripts/site_check.py 把构建好的站开在本机,用无头 Chrome(要装 Chrome 或 Chromium)把每一页按手机和电脑的几种尺寸打开,查看得见的错:页面被撑宽、字被裁掉或压在一起、点的地方太小、跳到小节时标题被顶栏挡住、图片坏了;按手机打开时还查整页有没有被缩小、输入框的字是不是小到 iPhone 一点进去就放大。再分浅色深色量文字对比度。有问题退出码是 1。--phone 只按手机查,竖屏横屏都有;--widths 按自己给的几种宽度查。

哪几页该重新核对:.venv/bin/python scripts/site_stale.py 列出页头「最后核对」里的文件在核对之后又改过的页。核完一页,把它的 verified 改成当天的日期和提交。再过一遍 3.4 的关卡。

上线

站放在 Cloudflare Pages 上,传上去的就是 site/dist/。构建完,site/scripts/deploy-files.mjs 还会在里面写四份文件,都从构建出来的页面算,不手写:

正式地址只写在 site/astro.config.mjs 的 site,每一页的规范链接(canonical)和 sitemap 都从它来。scripts/site_check.py 开站时带着同一份 _headers,被安全策略拦下的东西算报错:本机查过是什么样,上线后就是什么样。

没做到的