静态网站的更新与维护机制
你提出了一个非常核心的问题:“dist 里面是静态文件,那每次更新内容都需要重新打包吗?”
简短的回答是:是的,必须重新打包。
但这背后的逻辑和如何让这个过程“自动化”,是现代前端开发中非常重要的一环。
1. 为什么必须重新打包?
要理解这一点,我们需要区分源码和产物。
- 源码 (Source Code):也就是你在
docs目录写的.md文件和配置文件。它们是给人看的,也是易于编辑的。 - 产物 (Artifacts):也就是
dist目录下的 HTML/CSS/JS 文件。它们是给浏览器看的,经过了压缩和优化,很难人工阅读或修改。
VitePress 的工作就像要把“大米”加工成“熟饭”。
- 当你修改了 Markdown 文件(换了种大米),
dist里的 HTML(那锅饭)并不会自动变。 - 你必须再次运行
npm run docs:build(重新煮饭),才能生成新的 HTML 文件。
如果你只改了源码但没有重新打包,直接把旧的 dist 传到服务器,网站上显示的自然还是旧内容。
2. 只有静态网站是这样吗?
是的,这就是静态站点生成器 (SSG) 的特点。
与之相对的是 动态网站(SSR / PHP / Java 等):
- 动态网站在用户访问时,服务器实时从数据库里拉取内容拼成页面。你改了数据库,用户刷新即见。
- 静态网站(如 VitePress)在构建阶段就把页面生成好了。虽然灵活性不如动态网站,但它的访问速度和安全性是最高的。
3. 每次都要手动运行 build 很麻烦怎么办?
如果在 10 年前,我们确实需要:
- 写文章
- 运行
build命令 - 打开 FTP 软件
- 把
dist文件夹上传覆盖
但现在,如果你觉得“写完文章还要打包再上传”很繁琐,那是因为你还没有使用 CI/CD(持续集成/持续部署)。
自动化部署 (CI/CD)
这是现在最主流的做法。我们通常会把打包和发布的工作交给“机器人”(比如 GitHub Actions, Vercel, Netlify)。
理想的工作流是这样的:
- 你只管写:在本地写好 Markdown。
- 推送代码:执行
git push把源码同步到 GitHub。 - 自动打包:GitHub 上的监测服务发现你更新了代码,自动启动一个云端服务器,帮你运行
npm run docs:build。 - 自动发布:云端服务器打包好后,自动把生成的
dist内容推送到你的网站服务器。
在这个流程中,你确实需要“重新打包”,但这个动作是云端自动完成的,你完全感觉不到它的存在。
总结
- 手动模式:每次更新文章 -> 本地运行
npm run docs:build-> 手动上传dist目录。 - 自动模式 (推荐):每次更新文章 ->
git push-> 云端平台自动构建并更新网站。
所以,虽然原理上必须重新打包,但通过工具,我们可以让这个过程对人类“隐形”。