TypeScript 项目的 CI/CD:从零开始的 GitHub Actions 指南
现代 TypeScript 开发离不开快速可靠的自动化。手动测试、构建和部署不仅耗时,而且容易出错。CI/CD(持续集成/持续部署)应运而生——这是一种自动检查和部署代码的实践。本文将详细讲解如何使用 GitHub Actions 为 TypeScript 项目设置完整的 CI/CD 流水线——从基本配置到高级场景。
什么是 CI/CD,TypeScript 开发者为什么需要它?
CI/CD 是一种结合了两项实践的方法论:
- 持续集成(CI)——每次推送到仓库时自动构建和测试代码。这可以快速发现错误和冲突。
- 持续部署/交付(CD)——测试通过后自动将应用部署到服务器或云端。
对于 TypeScript 项目,CI/CD 尤其重要,因为 TypeScript 会编译成 JavaScript,类型或配置中的错误可能只在构建阶段才会显现。GitHub Actions 是 GitHub 内置的工具,允许直接在仓库中创建工作流。
第一步:TypeScript 项目的基础工作流
我们从简单的开始——在项目根目录创建文件 .github/workflows/ci.yml。这个工作流会在每次推送到 main 分支或创建 Pull Request 时运行。
name: CI Pipeline
on: push: branches: [ main ] pull_request: branches: [ main ]
jobs: build-and-test: runs-on: ubuntu-latest
strategy: matrix: node-version: [18.x, 20.x]
steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm ci - run: npm run build --if-present - run: npm test - run: npm run lint --if-present我们来解析关键点:
actions/checkout——将仓库克隆到运行器中。actions/setup-node——安装 Node.js 并缓存依赖。npm ci——干净安装依赖(比npm install更快)。npm run build——将 TypeScript 编译成 JavaScript(确保package.json中有build脚本)。npm test——运行测试(例如 Jest)。
strategy.matrix 允许同时在多个 Node.js 版本上测试代码——这提高了兼容性的可靠性。
第二步:添加代码检查与格式化
代码质量是 CI 的重要部分。我们添加 ESLint 和 Prettier 步骤。确保它们已安装在项目中:
npm install --save-dev eslint prettier eslint-config-prettier我们将用新步骤补充工作流:
- run: npm run lint - run: npm run format:checkpackage.json 中应有相应的脚本:
{ "scripts": { "lint": "eslint src --ext .ts", "format:check": "prettier --check \"src/**/*.ts\"", "format": "prettier --write \"src/**/*.ts\"" }}现在,每次推送时,GitHub Actions 不仅会检查类型和测试,还会检查代码风格。如果 linter 发现错误——流水线将失败,开发者会收到通知。
第三步:设置 CD——自动部署到 Vercel/Netlify
TypeScript 项目通常使用无服务器平台。我们来部署到 Vercel——这是其中