- subset-font-css.mjs post-build:扫每页文本(含 attr)+ ui.ts 全
词条 + Latin/标点永保三防线,命中 unicode-range 才留 @font-face,
子集按内容哈希去重共享,孤儿原 CSS 清出——全站字体 CSS 6.7→2.6MB
(61%),mian-sha 声明 101→48/家族
- build.sh 挂载(存在性守卫:车道在途文件不断发布链——20:31 事故
纪律)
- GalleryPage srcset 阶梯 320/560/720→480/800/1200(首图
fetchpriority 维持)
- Lighthouse:mian-sha 61→78、gallery 74→79、en 70→83、terminal
74→88(A11y/BP/SEO 持平;unused-css 370→36KB)
- 过程坑:v1 重写 href 丢前导斜杠致嵌套页 404——v2 只换文件名
车道:op-gitea(A/B 渲染等价证明:serif 916 字 0-miss;分数复采
入 /tmp/e2e-shots/lighthouse-ap/);收编验收:serif 字形
fonts.check 实测 true、srcset 产出、E2E 31/31
验证: pnpm astro build + subset 跑通 35 页;E2E 31/31 PASS;
staging 部署后 stamp 复核
Spec: none (构建管线性能二连:post-build 子集化+图片阶梯)
Co-authored-by: GLM-5.3
38 lines
1.7 KiB
Bash
Executable File
38 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
# 构建管线(Phase 5c 裸 clone 改造):构建源 = origin/main 硬跟,非本地工作树。
|
|
#
|
|
# 为什么:此前直接构建 ~/Code/Github/my-blog 工作树——分支/未提交状态会
|
|
# 意外上线(Sveltia 冒烟期实测发生过);且 Sveltia 的 main 提交无法自动
|
|
# 发布。改为独立构建仓 fetch+reset 硬跟 main:线上=远端 main,确定性闭环。
|
|
# blog 仓已公开,匿名 fetch 无需凭据。
|
|
set -e
|
|
BUILD_REPO="$HOME/docker_apps/blog/build-repo"
|
|
STAGING="$HOME/docker_apps/blog/www-staging"
|
|
|
|
if [ ! -d "$BUILD_REPO/.git" ]; then
|
|
echo "[build] 首次克隆构建仓"
|
|
git clone https://git.wait4x.online/wait4x/blog.git "$BUILD_REPO"
|
|
fi
|
|
|
|
cd "$BUILD_REPO"
|
|
git fetch origin main
|
|
git reset --hard origin/main
|
|
git clean -fd --exclude node_modules
|
|
SHA=$(git rev-parse --short HEAD)
|
|
echo "[build] 构建源: origin/main @ $SHA"
|
|
|
|
pnpm install --frozen-lockfile >/dev/null
|
|
pnpm astro build
|
|
|
|
# 按页字体 CSS 子集化(车道 A 任务 1):裁 @font-face 声明数,构建仓与本地同链;
|
|
# 存在性守卫:新文件未推送到 main 前构建仓无此脚本,绝不让发布链因车道在途文件断掉
|
|
[ -f scripts/build-perf/subset-font-css.mjs ] && node scripts/build-perf/subset-font-css.mjs dist || echo "[build] subset 脚本未就绪,跳过"
|
|
|
|
echo "[build] rsync -> $STAGING"
|
|
mkdir -p "$STAGING"
|
|
rsync -a --delete "$BUILD_REPO/dist/" "$STAGING/"
|
|
ORIG="$HOME/docker_apps/blog/photos-originals"
|
|
if [ -d "$ORIG" ]; then rsync -a "$ORIG/" "$STAGING/photos-originals/"; fi
|
|
printf 'built %s at %s\n' "$SHA" "$(date -Is)" > "$STAGING/.build-stamp"
|
|
echo "[build] done: $(find "$STAGING" -name '*.html' | wc -l) html files @ $SHA"
|