经过一番折腾,我的 Hugo 博客正式从本地搬到了 Vercel。这次部署不仅通过 package.json 实现了 Pagefind 全文搜索,还利用 jijian 主题内置的“本地静态加密”方案实现了安全的文章访问控制。
为了方便以后查阅,也为了给有类似需求的朋友提供参考,特整理此文。
1. 为什么选择 Vercel?
相比于 GitHub Pages 或 Cloudflare Pages,Vercel 的优势在于其极速的构建流水线和灵活的配置。配合 jijian 主题的 本地静态加密 功能,您可以轻松实现“文章级别”的访问控制,不依赖任何第三方服务或边缘函数(Edge Functions)。
2. 部署前的项目结构调整
为了让 Vercel 能够顺利执行构建任务,我在根目录下补充了一个关键文件:
package.json:我们需要通过它来管理 Pagefind(搜索索引工具)。有了它,Vercel 才能在构建时自动安装正确的工具链。
|
|
3. Vercel 导入与配置
在 Vercel 导入 GitHub 仓库时,关键配置如下:
基本信息
- Application Preset:
Hugo - Root Directory:
./
构建命令 (Build Command) 🚀
由于我们要通过 Node.js 运行加密脚本,最稳妥的方式是直接调用 package.json 中定义好的命令:
|
|
环境变量 (Environment Variables) 🔑
在部署界面的 Environment Variables 栏目添加以下变量:
| Key | Value | 说明 |
|---|---|---|
HUGO_VERSION |
0.158.0 |
Hugo 版本,建议与本地一致 |
HUGO_BASEURL |
https://your-domain.com/ |
站点 URL |
4. 本地静态加密
jijian 主题原生支持 本地静态加密。您只需要在文章的 Front Matter 中添加 mima(或 password)字段即可。
实现原理:
- 构建时处理:构建命令里的
node .../encrypt.js会自动扫描含有密码的文章并进行加密处理。 - 本地解密:浏览器端使用 WebCrypto API 进行解密,无需依赖后端服务。
5. Pagefind 搜索适配
由于 Pagefind 是在静态文件生成后才运行的。我们在构建命令中加入了 npx pagefind。
注意:要确保引用的是 /pagefind/pagefind-ui.js。
加载评论中...
哎呀!Giscus评论模块加载失败啦~
Giscus是基于Github Discussions的,或许当前网络无法访问Github哦!