如何部署这个 Astro 主题

作者:Goose
2 分钟阅读

目录

  1. 1. 准备运行环境
  2. 2. 先改这几个关键配置
    1. astro.config.mjs
    2. src/config.ts
  3. 3. 内容文件怎么组织
  4. 4. 本地验证上线前状态
  5. 5. 最省事的部署方式:Vercel / Netlify / Cloudflare Pages
    1. 方案 A:Vercel
    2. 方案 B:Netlify
    3. 方案 C:Cloudflare Pages
  6. 6. GitHub Pages 部署要注意什么
  7. 7. 自定义域名上线前的最后检查
  8. 8. 常见问题
    1. 构建成功,但页面样式丢失
    2. 搜索框能打开,但搜不到内容
    3. 多语言页面 404
  9. 9. 一套推荐上线流程
  10. 总结

1. 准备运行环境

这个主题基于 Astro,建议先准备好以下工具:

克隆项目后,先安装依赖:

Terminal window
git clone git@github.com:ErinaYip/goosequill.git
cd goosequill
npm install

本地开发使用:

Terminal window
npm run dev

生产构建使用:

Terminal window
npm run build

这个项目的构建脚本不只是执行 astro build,还会额外运行 Pagefind 来生成搜索索引,所以正式部署前最好始终用 npm run build 做一次完整验证。

2. 先改这几个关键配置

部署前,建议优先检查下面几个文件。

astro.config.mjs

这里最重要的是 sitebase

如果你部署到根域名,通常保持:

site: 'https://blog.example.com',
base: '/',

src/config.ts

这里控制站点标题、描述、RSS、搜索、目录和分页等行为。

你至少应该确认这些字段:

如果你想用单语言模式:

defaultLocale: 'en'

如果你想开启多语言模式:

defaultLocale: undefined

这个项目现在的路由行为是:

3. 内容文件怎么组织

博客文章放在 src/content/blog/ 下,每篇文章一个目录。

例如:

src/content/blog/my-post/
index_en.mdx
index_zh-cn.mdx

推荐做法:

如果你只维护英文,最简单的方式就是写英文内容文件并保持:

defaultLocale: 'en'

4. 本地验证上线前状态

正式部署前,建议按这个顺序检查:

Terminal window
npm run build
npm run preview

npm run preview 会使用构建后的产物进行本地预览,这比开发模式更接近真实线上环境。

建议重点检查:

5. 最省事的部署方式:Vercel / Netlify / Cloudflare Pages

这是一个静态站点,因此部署到常见静态平台都比较直接。

方案 A:Vercel

在 Vercel 中导入仓库后,通常可以直接使用:

如果没有特殊需求,其他选项保持默认即可。

方案 B:Netlify

Netlify 也适合这个主题,配置通常是:

方案 C:Cloudflare Pages

如果你想把博客托管在 Cloudflare 上,也可以使用相同思路:

6. GitHub Pages 部署要注意什么

如果你部署到 GitHub Pages,一般最容易踩坑的是 base

例如你的仓库地址是:

https://<user>.github.io/goosequill/

那么你通常需要:

base: '/goosequill'

同时 site 也建议改为对应的最终地址。

如果 base 不正确,常见现象包括:

7. 自定义域名上线前的最后检查

在绑定正式域名之前,建议再确认下面几项:

如果你启用了 RSS 和 sitemap,但 site 还保留示例地址,生成出来的绝对链接通常会是错误的。

8. 常见问题

构建成功,但页面样式丢失

优先检查:

搜索框能打开,但搜不到内容

这个主题使用 Pagefind,搜索依赖构建后的索引文件。请确认:

多语言页面 404

优先检查:

9. 一套推荐上线流程

如果你想用一套稳妥又简单的流程,可以直接照着做:

  1. Fork 或克隆项目
  2. 修改 astro.config.mjs 中的 sitebase
  3. 修改 src/config.ts 中的站点名称、描述和语言模式
  4. 添加你自己的文章内容
  5. 本地执行 npm run build
  6. 本地执行 npm run preview
  7. 推送到 Git 仓库
  8. 连接到 Vercel、Netlify 或 Cloudflare Pages
  9. 上线后再检查 RSS、sitemap 和搜索

总结

这个主题的部署本质上并不复杂,核心就三件事:

只要这三点处理正确,部署到大多数静态托管平台都会比较顺利。

如果你后续还想继续完善这篇文章,可以再补一节专门介绍: