Files
blog/src/pages/colophon.astro
T
wait4xandGLM-5.3 aa050d8035 feat(pages): /stack 装备页 + /colophon 制作页(双语)与页脚入口
- colophon:五节灰阶数据表讲"这站怎么造的"(build/visual/写作流
  /i18n/features,变字体提速等实数入表)
- stack:homelab/自托管/站点依赖/日常四节(版本号实读
  package.json;硬件细节与 daily 清单 TODO(下轮) 待补)
- Footer 顺手修真缺陷:locale prop 机制存在但从未透传,en 全站
  页脚实为 zh 文案——改 Astro.url.pathname 构建期自推断(localeOf
  复用,显式 prop 优先),零 BaseLayout 改动
- 页脚「装备 · 制作」双入口(en 轨自动 /en/ 前缀)

车道:op-artalk(自验 15/15:双页双语桌面+390 溢出断言+Footer
双轨感知);收编验收 6 检全过

验证: pnpm astro build 34 页 exit 0;双页双语 390 视口无溢出;E2E
      31/31 PASS

Spec: none (两静态页+Footer 修复,车道级交付)

Co-authored-by: GLM-5.3
2026-10-25 20:51:02 +08:00

118 lines
4.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
// /colophon 制作页:本站如何造出来——灰阶数据表叙事,不做营销页
// 事实源:package.json 实版本、部署实录、docs/博客重设计调研报告.md 拍板项
import BaseLayout from '../layouts/BaseLayout.astro';
const SECTIONS = [
{
tag: 'build',
items: [
['Astro 7.3.8', '静态生成(SSG),零运行时框架 JS;交互由原生 island 脚本承担'],
['Pagefind', '搜索索引构建期生成,静态站零后端搜索'],
['Shiki', '代码双主题高亮,构建期完成'],
['构建产物', '约 30 页 / 数秒完成,homelab 上由 push 触发'],
],
},
{
tag: 'visual',
items: [
['丙路线', '灰阶骨架 × 分轨正文:结构用灰阶与留白说话,正文按内容轨道换字体'],
['四字体族', '思源宋(书评正文)· 思源黑(UI/技术)· JetBrains Mono(代码)· 霞鹜文楷(金句,系统栈回退)'],
['@fontsource', '字体自托管分片加载;思源黑/宋切换变字体后 CSS 345KB→106KB 全站提速'],
['tokens', '颜色/间距/时长全部变量化,亮暗两套一套代码'],
],
},
{
tag: 'writing flow',
items: [
['gitea', '自托管 git 服务:本地编辑器与 gitea 网页写的是同一个仓库'],
['webhook', 'push 触发,HMAC 签名验证,仅 main 分支'],
['发布链', 'homelab 构建 → rsync → nginx 静态目录,全程无云厂商构建分钟'],
['透明化', '页脚 built-from 一行链到本次构建对应的 commit'],
],
},
{
tag: 'i18n',
items: [
['预翻译', '腾讯 TMT 构建期机翻,.en.md 入仓版本化'],
['双语轨', '/en/ 前缀预构建,切换是纯导航零等待'],
['译注', '机翻文章带 AI 译注小标,欢迎指正'],
],
},
{
tag: 'features',
items: [
['评论', 'Artalk 2.10 自托管(sqlite),挂主域 /artalk 路径'],
['图库', 'EXIF 构建期提取(exifr)+ sharp 宽高比驱动 masonry,零运行时 JS'],
['边缘', 'ESA CDN + HTTPS 通配证书;页脚 ICP 备案法定保留'],
],
},
];
---
<BaseLayout title="colophon" description="这个博客怎么造的:构建、视觉、写作流与自托管全家桶">
<section class="colo">
<h1 class="colo-title">制作 <span class="dim">/ colophon</span></h1>
<p class="colo-lead">
一个静态博客能自己决定的事情,尽量自己决定:自己构建、自己托管、自己翻译、自己记版本。
</p>
{SECTIONS.map((s) => (
<section class="sec">
<h2 class="sec-tag">{s.tag}</h2>
<dl class="rows">
{s.items.map(([term, desc]) => (
<div class="row">
<dt>{term}</dt>
<dd>{desc}</dd>
</div>
))}
</dl>
</section>
))}
</section>
</BaseLayout>
<style>
.colo { max-width: 720px; }
.colo-title {
font-size: 22px;
color: var(--ink-1);
margin: var(--space-5) 0 var(--space-2);
}
.dim { color: var(--ink-4); font-family: var(--font-mono); font-size: 16px; }
.colo-lead {
font-size: 14px;
color: var(--ink-3);
margin-bottom: var(--space-5);
}
.sec { margin-bottom: var(--space-5); }
.sec-tag {
font-family: var(--font-mono);
font-size: 12px;
color: var(--ink-4);
letter-spacing: 0.08em;
border-bottom: 1px solid var(--line);
padding-bottom: var(--space-1);
margin-bottom: var(--space-2);
}
.rows { margin: 0; }
.row {
display: grid;
grid-template-columns: 120px 1fr;
gap: var(--space-3);
padding-block: var(--space-2);
}
.row + .row { border-top: 1px dashed var(--line); }
dt {
font-family: var(--font-mono);
font-size: 13px;
color: var(--ink-2);
overflow-wrap: anywhere;
}
dd { margin: 0; font-size: 13px; color: var(--ink-3); line-height: 1.7; }
/* 窄屏:键值上下堆叠,避免 120px 定宽挤压长译文 */
@media (max-width: 560px) {
.row { grid-template-columns: 1fr; gap: 2px; }
}
</style>