方案概述
通过 scripts/publish.js 实现一键部署:自动读取 .env 中的配置,完成构建 → 目录重组 → 上传,全程无需手动敲命令。
在线预览: https://1fff46f0.xuwang-62j.pages.dev
部署流程
npm run build ← Next.js 构建 + 目录重组
↓
wrangler pages deploy ← 上传到 Cloudflare Pages CDN
详细步骤
1. 创建 Cloudflare API Token
- 打开 https://dash.cloudflare.com/profile/api-tokens
- Create Token → Get a custom token → Create Custom Token
- 权限配置:
- Account permissions:Account Settings → Read
- Cloudflare Pages:Edit
- 创建后复制 Token
2. 获取 Account ID
在终端运行(把 <Token> 换成上一步的 Token):
curl -H "Authorization: Bearer <Token>" https://api.cloudflare.com/client/v4/accounts
返回结果中 result[].id 即为 Account ID,复制备用。
3. 配置 .env 文件
# 在项目根目录创建 .env(不要提交到 Git)
CLOUDFLARE_API_TOKEN=cfut_your_token_here
CLOUDFLARE_ACCOUNT_ID=your_account_id_here
.env已在.gitignore中,不会被提交到 Git。
4. 安装 Wrangler CLI
npm install -g wrangler
5. 配置 wrangler.toml
name = "xuwang"
pages_build_output_dir = "dist"
compatibility_date = "2024-01-01"
Wrangler 4 不再支持在
wrangler.toml中写account_id,改由环境变量或命令行传入。
6. 一键部署
node scripts/publish.js
脚本会自动读取 .env,依次执行构建和部署。成功后会输出:
🚀 开始发布到 Cloudflare Pages
📦 步骤 1/2:运行构建...
🌎 步骤 2/2:上传到 Cloudflare Pages...
✅ 发布完成!
换电脑后的操作
# 1. 克隆仓库
git clone https://github.com/xuwangxx/xuwang.git
# 2. 安装依赖
npm install
# 3. 配置 Token
cp .env.example .env
# 编辑 .env,填入真实 Token 和 Account ID
# 4. 部署
node scripts/publish.js
关键文件说明
| 文件 | 作用 |
|------|------|
| scripts/publish.js | 一键部署脚本(构建 + 上传) |
| scripts/cf-pages-deploy.js | 构建后将 .next/ 重组为 dist/ |
| next.config.js | webpack.cache=false 解决 25MB 限制 |
| wrangler.toml | Wrangler 项目配置 |
| .env | API Token 和 Account ID(本地,不提交) |
| .env.example | 配置模板(占位符,已提交 Git) |
遇到的问题与解决
Wrangler 提示 account_id 未找到
原因: Wrangler 4 不再支持 wrangler.toml 中的 account_id 字段。
解决: Account ID 通过环境变量传入,由 publish.js 自动完成,无需手动配置。
提示 account_id 权限不足
原因: Token 缺少 Account Settings Read 权限。
解决: 重新创建 Token,确保勾选 Account Settings → Read。
部署后页面 404
原因: Next.js 的 .next/server/pages/ 结构与 Cloudflare Pages 不兼容。
解决: cf-pages-deploy.js 已自动将 HTML 重组到 dist/ 根目录,无需手动处理。
成本
- Cloudflare Pages:免费(无限带宽,无限请求)
- Wrangler CLI:免费
- 自定义域名(可选):约 ¥60/年
相关文件
next.config.js— Next.js 配置scripts/publish.js— 一键部署脚本scripts/cf-pages-deploy.js— 目录重组脚本wrangler.toml— Wrangler 配置文件.env.example— 配置模板