买了域名之后花了一个下午把博客搭好,记录一下过程。

选型

最终选了 Astro 做静态生成、GitHub 托管代码、Vercel 部署、阿里云管理域名解析。Hugo 和 Hexo 也都不错,选 Astro 主要是 Node.js 环境现成,不需要额外装东西。

项目初始化

核心文件没几个:

src/
├── content.config.ts            # 内容集合配置
├── content/blog/                # Markdown 文章放这里
├── layouts/Base.astro           # 全局布局
└── pages/
    ├── index.astro              # 首页文章列表
    ├── about.astro              # 关于页
    └── blog/[...slug].astro     # 文章详情页

再加上 package.jsonastro.config.mjs 和一份全局 CSS,骨架就齐了。

踩坑记录

Astro v6 Content API 变更

最新版 Astro 的内容集合 API 有较大改动:

  • src/content/config.ts 移动到 src/content.config.ts
  • 集合定义必须指定 loader: glob({ pattern, base })
  • entry.render() 被移除,改用 render(entry) 函数
  • entry.slug 不再自动生成,改用 entry.id

错误提示还算清楚,跟着改就能过。

GitHub 推送

国内直连 GitHub 经常超时,需要走代理:

git config --global http.proxy <代理地>
git config --global https.proxy <代理地>

推送完记得把不需要的本地目录(.astro.vercel)写进 .gitignore

Vercel 仓库权限

Vercel 导入 GitHub 仓库时可能提示 “Missing Git repository”。去 GitHub 的 Settings → Applications → Vercel → Configure,手动勾选仓库即可。不想折腾也可以直接用 npx vercel CLI 部署,命令行走一遍就能上线。

域名 DNS 配置

Vercel Domains 页面会告诉你需要配什么记录。在阿里云 DNS 控制台按它给的提示添加 A 记录(根域名)和 CNAME 记录(www 子域名)就行。注意以 Vercel 页面显示的实际值为准,因为服务商的 IP 可能会变。

日常写文章

src/content/blog/ 下新建 .md 文件:

---
title: "标题"
date: 2026-05-10
---

正文...

然后 git push 到 GitHub,Vercel 自动构建上线。整个过程不需要碰服务器。

本地预览用 npm run dev,浏览器打开 localhost:4321

费用

目前零成本:Astro 开源、GitHub 免费、Vercel 免费额度个人博客完全够用、.xyz 域名首年也就几块钱。