平台工程

内容子项目「构建时同步」· 独立仓库镜像进 public,新内容自动上线

入档:2026-06-25 来源:把「成为 Prompt 大师」系列(独立仓库、自包含画廊、45MB 图、频繁加期)集成进蛛网之上,作为独立版块 状态:已上线,新增一期=只改系列仓库,下次构建自动上线

一句话总结

当一块内容是独立仓库 + 频繁更新 + 自包含静态站(或大体积素材)时,不要把它拷快照进主站仓库(会让主仓变胖、且每次更新要手动重拷、必然陈旧)。改成构建时同步:构建脚本浅克隆到缓存 → 镜像进 public/(排除 .git) → 主仓只存「拉取逻辑」几行,产物 gitignore。新内容 = 只改子项目仓库,主站下次构建自动带上线,完全不碰主站代码。

决策链(为什么不拷快照)

实现要点(可照搬)

  1. 同步脚本里加一段:缓存存在则 git -C .cache fetch --depth 1 + reset --hard,否则 git clone --depth 1
  2. 镜像进 public/子路径/ 前先清空旧产物,再整盘 fs.cpSync(cache, pub, {recursive, filter}),filter 排除 .git(否则 .git 会被打进 dist 外泄)。
    • filter 正则:!/[\\/]\.git([\\/]|$)/.test(src)
  3. .gitignore 同时忽略 .cache/public/子路径/(都是构建产物,不入库)。
  4. 子路径靠托管端目录索引(nginx index index.html; / Pages)解析 /子路径/index.html,和静态游戏 /fraud-desk/ 同模式。
  5. 首页要展示子项目数据(如最新几期封面)→ 构建期解析子项目产物里的数据数组(如 index.html 里的 var EPISODES=[…]),用 new Function('return '+arr)() 求值(自家内容,合法 JS 字面量)。

教训(可复用)

关联文档

类型/平台工程