前置条件
- Node.js >= 18,pnpm >= 8
- 一个 Cloudflare 账号(本项目已存在 Pages 项目
astro-gyoza) - 本机已登录 wrangler(Cloudflare 官方 CLI)
总体流程
整个发布流程只有两步:构建 生成 dist/ 静态文件,上传 到 Cloudflare Pages。两条命令都在项目根目录(astro-gyoza-main/)下执行。
第一步:安装依赖
pnpm install
注意:首次安装后如遇到
[ERR_PNPM_IGNORED_BUILDS] Ignored build scripts: workerd的提示,需要把pnpm-workspace.yaml中workerd的值改为true,然后重新执行pnpm install,否则 wrangler 无法正常工作。
第二步:构建静态站点
pnpm build
该命令会依次执行类型检查(astro check)、构建(astro build)和生成站内搜索索引(pagefind),最终产物输出到 dist/ 目录。
构建成功后,检查 dist/posts/ 下是否生成了新文章的 HTML,例如 dist/posts/xxx/index.html。
注意:
package.json中的@astrojs/sitemap被固定在3.1.5,不要随便升级。更高的版本(如 3.7.3)与 Astro 4.6 不兼容,构建时会在 sitemap 阶段报错Cannot read properties of undefined (reading 'reduce')。
第三步:部署到 Cloudflare Pages
pnpm deploy
等价于执行:
pnpm exec wrangler pages deploy dist --project-name astro-gyoza
dist:上传的目录--project-name astro-gyoza:Cloudflare Pages 上已有的项目名(不要改,域名zmy666.me绑定在这个项目上)
看到 ✨ Deployment complete! 即部署成功,会输出一个临时预览地址(如 https://xxxx.astro-gyoza-61a.pages.dev),生产域名 zmy666.me 会自动切换到最新版本。
登录问题
如果 wrangler 提示未登录或令牌过期,先执行:
pnpm exec wrangler login
浏览器会弹出 Cloudflare 授权页面,登录授权后会自动保存凭据。可以用以下命令验证登录状态:
pnpm exec wrangler whoami
常见问题
| 问题 | 原因与解决办法 |
|---|---|
构建时 sitemap 报错 Cannot read properties of undefined (reading 'reduce') | @astrojs/sitemap 被升到了 3.7+,与 Astro 4.6 不兼容。把 package.json 中该依赖固定为 3.1.5,重新 pnpm install |
提示 Ignored build scripts: workerd | 在 pnpm-workspace.yaml 的 allowBuilds 中把 workerd 设为 true,重新 pnpm install |
部署时警告 working directory is a git repo and has uncommitted changes | 只是提醒,不影响部署,可忽略 |
| 部署成功后域名没有更新 | Cloudflare 缓存,等待一两分钟或强制刷新浏览器 |
| 忘记项目名 | 执行 pnpm exec wrangler pages project list 查看已有项目 |
发布新文章后的完整流程
pnpm install # 1. 安装依赖(有新依赖时才需要)
pnpm build # 2. 构建 + 生成搜索索引
pnpm deploy # 3. 上传到 Cloudflare