在前端开发中,把项目部署到线上环境是每个开发者都会遇到的环节。对于个人项目或静态网站,GitHub Pages 提供了免费的托管服务。而想要快速、自动化地将本地项目发布到 GitHub Pages,gh-pages 这个工具包是开发者的首选。
一、什么是 gh-pages
gh-pages 是一个 Node.js 工具包,用于将本地静态文件(HTML、CSS、JS 等)自动推送到 GitHub 仓库的一个分支上,从而通过 GitHub Pages 对外提供访问。
简而言之,它解决了两件事情:
- 自动将本地构建好的静态文件上传到 GitHub。
- 自动创建和维护用于 Pages 的分支(默认是
gh-pages)。
二、gh-pages 的工作原理
工作流程大致如下:
- 本地构建项目
将前端项目编译生成静态文件,例如 React 的build文件夹或 Vue 的dist文件夹。 - 推送到指定分支
gh-pages会把这些文件推送到远程仓库的分支(默认gh-pages)。 - GitHub Pages 提供访问
GitHub 会根据指定分支托管网站,用户即可通过https://用户名.github.io/仓库名访问。
可以理解为:gh-pages 就是一个“自动上传助手”,把本地文件打包并推送到 GitHub Pages 分支。
三、安装 gh-pages
在你的项目中安装即可:
npm install --save-dev gh-pages
# 或者使用 pnpm
pnpm add -D gh-pages
四、基本用法
假设你有一个 React 项目,构建目录是 build:
- 构建项目
npm run build
- 发布到 GitHub Pages
npx gh-pages -d build
参数说明:
-d build→ 指定要发布的本地目录- 默认推送到
gh-pages分支
执行完成后,GitHub Pages 会自动托管这些文件,你可以访问 https://用户名.github.io/仓库名。
五、在 package.json 中配置脚本
为了更方便,可以在 package.json 中配置:
{
"scripts": {
"predeploy": "npm run build",
"deploy": "gh-pages -d build"
}
}
执行:
npm run deploy
就会自动完成 构建 → 发布 的整个流程。
六、自定义分支和远程仓库
gh-pages 支持自定义分支和远程仓库:
npx gh-pages -d build -b custom-branch -r git@github.com:用户名/仓库名.git
参数说明:
-b→ 指定分支名(默认gh-pages)-r→ 指定远程仓库(可选)
这对于一些不想使用默认分支的项目非常有用。
七、使用注意事项
- 只适合静态文件
gh-pages不能部署动态后端项目,它只处理 HTML、JS、CSS 等静态资源。 - 分支会被覆盖
每次部署都会覆盖目标分支内容,注意不要在该分支上手动添加其他文件。 - 相对路径问题
前端项目中publicPath或homepage配置要正确,否则资源可能 404。
八、小结
gh-pages 是前端开发者快速部署静态网站的利器:
- 自动创建分支并上传文件
- 支持自定义分支和远程仓库
- 可以和
predeploy脚本结合,实现一键部署