六维教程

构建配置与预览部署

连接 Git 仓库只是走通部署流程的第一步,真正决定构建能不能成功、产物对不对的,是背后的构建配置。构建命令写错、依赖版本不对、环境变量缺失,任何一个都会让构建挂掉。这一篇把 Pages 构建配置的每一项讲清楚,再讲预览分支和部署别名这两个让团队协作更顺手的特性。

构建配置项总览

Pages 项目的构建配置在仪表盘的 项目设置 → 构建和部署 里,所有控制项集中在一张表里。

配置项 作用 常见取值
框架预设 自动填好构建命令和输出目录 Vite、Next.js、Hexo、None
构建命令 执行构建的 shell 命令 npm run build、npx hexo generate
构建输出目录 构建产物所在的目录 dist、public、build
根目录 构建执行的根路径,monorepo 时用到 默认为仓库根目录
环境变量 注入到构建过程的变量 API_KEY、NODE_VERSION
构建系统版本 构建环境的基础系统 版本 1、版本 2

框架预设只是辅助填值,最终生效的还是构建命令和输出目录这两项。就算预设识别错了,手动改过来一样能跑。

构建命令与输出目录

构建命令就是你在本地打包时执行的那条命令,Pages 把它放到构建环境里跑一遍。输出目录是命令执行完后产物所在的位置,Pages 会把这个目录里的文件全部上传。

常见框架的配置如下。

框架 构建命令 输出目录
Vite npm run build dist
Create React App npm run build build
Vue CLI npm run build dist
Hexo npx hexo generate public
Hugo hugo public
Astro npm run build dist

构建命令留空表示不执行构建,适用于纯静态文件直接上传的场景。输出目录填错是最常见的构建失败原因,明明构建成功了但部署后页面空白,多半是输出目录路径不对。

输出目录支持相对路径,比如 distbuild。如果产物在子目录,填 packages/web/dist 这种完整相对路径即可。

环境变量

很多前端项目构建时需要读取环境变量,比如接口地址、API 密钥、功能开关。Pages 允许你在构建时注入这些变量,分两种类型。

类型 说明 适用场景
明文变量 在仪表盘可见,注入到构建过程 接口地址、公开配置
加密变量 加密存储,设置后不可再查看 API 密钥、私有 Token

设置路径在 项目设置 → 环境变量,每个变量还能选择只对生产环境生效、只对预览环境生效、或两者都生效。

环境 何时使用变量
生产环境 推送到生产分支触发的构建
预览环境 推送到非生产分支触发的构建

把生产接口地址和测试接口地址分开注入,就能让预览部署访问测试环境,生产部署访问正式环境,避免用同一套配置导致预览页面打到生产库。

需要特别说明,这些环境变量是构建时注入的,会打包进静态产物,任何能访问站点的人都能在浏览器里看到。真正的敏感数据不要放这里,应该放到 Pages Functions 的运行时环境变量里,这部分后面会讲。

Node 版本控制

构建环境默认带一个 Node 版本,但很多项目依赖特定版本才能构建成功。Pages 提供三种方式指定 Node 版本,优先级从高到低如下。

方式 设置位置 示例
环境变量 仪表盘环境变量 NODE_VERSION = 18
.nvmrc 文件 仓库根目录 18
.node-version 文件 仓库根目录 18

最推荐用 .nvmrc 文件,它和本地开发用的 nvm 工具兼容,团队每个人本地和线上构建用的是同一个版本,避免”我这能构建,CI 挂了”的问题。

.nvmrc 文件内容就一行版本号。

18.17.0

也可以只写主版本号,Pages 会用该主版本最新的小版本。

18

不指定版本时,Pages 用构建系统默认的 Node 版本,这个版本会随平台升级而变化。建议始终显式指定,别让构建依赖一个会变的默认值。

除了 Node,其他运行时也能通过环境变量控制版本,常用的有下面几个。

环境变量 作用
NODE_VERSION Node.js 版本
NPM_VERSION npm 版本
YARN_VERSION Yarn 版本
PHP_VERSION PHP 版本

预览分支

上一篇已经提到,非生产分支的每次推送都会生成预览部署。实际团队协作中通常会有多个长期存在的功能分支,比如开发分支、测试分支。Pages 允许给特定分支开启预览部署,并配置哪个分支算生产分支。

配置在 项目设置 → 构建和部署 → 预览部署 里,常见选项如下。

选项 说明
非生产分支部署预览 开关,关闭后非生产分支不再触发构建
生产分支 默认 main 或 master,可改成其他分支

生产分支决定哪次推送会上线到 项目名.pages.dev 这个主域名。如果团队用 production 分支发布,把这里改成 production 即可,推到 main 就只生成预览不再上线。

预览部署的地址格式是 随机哈希.项目名.pages.dev,每次部署哈希都不同。除了哈希地址,还能给分支绑定固定别名,下面讲。

部署别名

别名就是给某次部署或某个分支起一个好记的固定地址。Pages 支持两类别名。

别名类型 格式 特点
分支别名 分支名.项目名.pages.dev 分支每次部署都更新到同一地址
自定义别名 别名.项目名.pages.dev 手动指定,适合临时演示

分支别名最实用。给 staging 分支绑定别名后,访问 staging.项目名.pages.dev 始终看到的是这个分支的最新部署,不用每次都去仪表盘翻哈希地址。

在仪表盘的某次部署详情页可以手动添加别名,也能用命令行工具 Wrangler(Cloudflare 的命令行开发工具)给指定部署打别名。

npx wrangler pages deployment --branch staging --project-name my-site

日常团队协作靠分支别名就够用了,临时演示地址再手动加。

直接上传部署

除了 Git 集成,Pages 还支持直接上传文件部署,不依赖 Git 仓库。适合把一批现成的静态文件快速上线,或者从其他平台迁移历史站点。

两种方式可以上传。

方式 操作
仪表盘拖拽 创建项目时选 直接上传,拖文件夹到浏览器
Wrangler 命令 npx wrangler pages deploy ./dist

Wrangler 命令行上传适合写进脚本做自动化,比如本地构建完直接推上去,不必每次走 Git。

npx wrangler pages deploy ./dist --project-name my-site

直接上传的部署没有 Git 提交记录关联,回滚要靠仪表盘的历史部署列表。需要版本管理的项目还是推荐 Git 集成,直接上传只作为补充手段。

到这里构建配置的关键项就讲完了。构建命令和输出目录决定产物,环境变量按环境分离注入,Node 版本用 .nvmrc 锁定,预览分支和部署别名让团队协作更顺畅。下一篇讲自定义域名和重定向规则,让站点用上自己的域名并控制访问路径。

上一篇 静态站点部署入门
下一篇 自定义域名与重定向规则

上一篇
静态站点部署入门
下一篇
自定义域名与重定向规则