如何在 GitHub Pages 上部署你的 Angular 网站

发布: (2026年1月15日 GMT+8 00:43)
6 min read
原文: Dev.to

Source: Dev.to

Angular 与 GitHub Pages

幸运的是,部署 Angular Web 应用到 GitHub Pages 有一种或多或少“官方”的方法。虽然它是第三方脚本,angular-cli-ghpages (GitHub repo)已被正式认可为最佳且推荐的做法。它对我立刻就起作用了,所以我直接使用了它。

我通常更倾向于使用内置方案,以免依赖外部库,但在这种情况下我破例了。这也是因为我计划以后进一步转向 Flutter,而该脚本已经涵盖了我所有需要的功能(包括自定义域名支持)。

我不得不更改发布策略——从仅使用 GitHub Actions 的流程改为使用 gh-pages 分支,同时仍保留 GitHub Actions。理想情况下,我本可以把所有内容保持在同一分支上以避免混淆,但目前 gh-pages 分支运行良好。

什么,什么不,以及他妈的到底是啥

我选择 Angular 有三个原因:

  1. 我在工作中也在使用它。
  2. 我发现了一些有趣的项目,将它与 Rust 通过 WebAssembly 结合
  3. 它可以轻松集成到 Antigravity 中。

这并不是因为 Angular 是“最佳”框架;我仍然认为应该根据具体需求来选择框架。

如果要根据当前需求来挑选框架,我会选 React + Next.js,我相信我也能找到使用它们的方法。对于个人作品集,任何现代框架都可以胜任。

我曾多年不使用框架来构建站点。我个人网站最长久的结构是 WordPress。它仍然存在,但还有人会把它用于这个目的吗?说实话,我希望不会——不是因为它是个坏产品,而是因为 它的时代已经过去,尽管 PHP 正在有一点复苏。

将 Angular 部署到 GitHub Pages

有两种方式可以添加部署步骤:

  • 手动 安装 angular-cli-ghpages 包。
  • 通过 Angular CLI,它还会在 angular.json 中添加一个 deploy 条目。

我选择了后者。运行:

ng add angular-cli-ghpages

假设:你已经全局安装了 Angular CLI。

接下来,更新你的发布设置(将 GitHub‑Pages 源更改为 gh-pages 分支)。在 angular.json 中添加以下 deploy 配置:

{
  "deploy": {
    "builder": "angular-cli-ghpages:deploy",
    "options": {
      "name": "John Doe",
      "email": "john.doe@foo.bar",
      "cname": "foo.bar"
    }
  }
}

nameemailcname 替换为你自己的 GitHub 凭据和自定义域名(如果使用自定义域名,则需要 cname 键)。

运行 ng deploy 现在会将构建好的站点推送到 gh-pages 分支(如果不存在会自动创建)。接下来我们使用 GitHub Actions 来自动化此过程。

Source:

使用 GitHub Actions 自动部署

如果没有特殊需求,唯一需要额外完成的步骤是从 Developer Settings 中创建一个 经典个人访问令牌(PAT),并勾选 repouser 权限范围。将该令牌保存为仓库的 secret,名称为 GH_TOKEN

创建工作流文件(例如 .github/workflows/deploy.yml),内容如下:

name: Deploy to GitHub Pages

on:
  push:
    branches: ['main']

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v6

      - name: Setup Node.js
        uses: actions/setup-node@v6
        with:
          node-version: '24.x'

      - name: Install dependencies
        run: npm install

      - name: Build
        run: npm run build

      - name: Deploy
        run: npm run deploy
        env:
          CI: true
          GH_TOKEN: ${{ secrets.GH_TOKEN }}
  • 如果你已经熟悉 GitHub Actions,这一步应该很直观。
  • 最后三个命令(npm installnpm run buildnpm run deploy)可以合并为一行,因为 angular-cli-ghpages 会自动检测 Angular 配置——只需确保使用的是较新版本的框架,以免出现问题。

注意事项

  • 生成令牌 – 从个人设置页面创建一个新的 PAT,并将其存储为仓库的 secret(GH_TOKEN)。你可以随意命名该 secret,只需相应地调整 secrets.GH_TOKEN 引用即可。
  • 工作流文件位置 – 文件必须放在仓库根目录的 .github/workflows 文件夹中,并使用 .yml(或 .yaml)扩展名。我的文件名为 deploy.yml,但文件名并不重要。
  • gh-pages 分支 – 我不喜欢维护单独的 gh-pages 分支;这感觉像是老旧的做法。不过当前的第三方包需要它,所以暂时我会保留它。希望能尽快找到更简洁的方案。

就这样!你的 Angular 站点现在应该会在每次推送到 main 时自动构建并部署到 GitHub Pages。

它就能正常工作,这就是我想要的。

如果你愿意,关注我的 Bluesky 和/或 GitHub 获取更多内容。我喜欢社交网络。

Back to Blog

相关文章

阅读更多 »