
自从把 JayChou's wiki 的 CI 迁移到腾讯云 EdgeOne Pages 就发现了一个问题,好像每个页面的撰写时间都是错的,全部显示的是最近一次构建的时间 (实际上是最近一次提交的时间),一直想探究下怎么回事,是不是我项目配置有问题,之前检查过 Vuepress-Hope 有关页面元数据的的文档,没有发现任何我的项目存在错误的。
直到昨天想根据 hope 提供的插件方法在每个页面增加更新日志,提交更新后访问,每个页面的更新日志都是相同的最近一次提交的消息。试着访问了 Vercel 和 Netlify 的默认项目域名发现其他 CICD 平台都是正常展示的,这就不能忍了。
问了 DeepSeek 才得到正确答案,是因为腾讯云 EdgeOne Pages 的浅克隆机制:
默认浅克隆 (Shallow Clone):
- EdgeOne Pages 在构建时默认使用
git clone --depth=1
(只克隆最近一次提交)- 导致 Git 插件无法访问完整历史记录,只能获取到最近一次提交信息
DeepSeek 同时给出了解决办法:
方案一:强制深度克隆 (推荐)
在
package.json
的构建命令前添加深度克隆指令:"scripts": {
"prebuild": "git fetch --unshallow || true",
"build": "vuepress build src"
}方案二:自定义构建命令
git config core.quotepath false &&
git fetch --unshallow &&
npm install &&
npm run build
不想在项目 Git 提交记录拉屎测试了 (拉了太多了),所以选择了在腾讯的控制台里改构建命令,注意 DeekSeek 给出的命令是有问题的,正确的构建命令应该是
git config core.quotepath false && git fetch --unshallow && pnpm docs:build

重新部署,完美 一切都正常了。