name: PR Check on: pull_request: branches: [main] types: [opened, edited, synchronize, reopened] jobs: # 检查 PR 标题是否符合 Conventional Commits 规范 pr-title: name: PR Title runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 24 - name: Install commitlint run: npm install --no-save @commitlint/cli @commitlint/config-conventional - name: Validate PR title env: PR_TITLE: ${{ github.event.pull_request.title }} run: echo "$PR_TITLE" | npx commitlint # 检查所有提交信息是否符合 Conventional Commits 规范 commit-messages: name: Commit Messages runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 24 - name: Install commitlint run: npm install --no-save @commitlint/cli @commitlint/config-conventional - name: Validate commit messages run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose # 运行 lint 和类型检查 code-quality: name: Code Quality runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 24 # lint:i18n 脚本用 bun 跑(package.json: "bun scripts/check_i18n.ts"), # CI 默认环境没有 bun 会报 sh: bun: not found - name: Setup Bun uses: oven-sh/setup-bun@v2 - name: Install dependencies run: npm install - name: Lint run: npx eslint --max-warnings 0 "src/**/*.{ts,tsx,vue,js}" # tsconfig.web.json 显式 require src/renderer/{auto-imports,components}.d.ts # 这两个文件由 unplugin-auto-import / unplugin-vue-components 在 vite 启动时 # 生成,且被 .gitignore 排除(58922dc 维护者主动设置)。CI 直接跑 typecheck # 拿不到 d.ts 会报 TS2688,先跑一次 build 触发 unplugin 生成 - name: Build (generates auto-import / components d.ts) run: npm run build - name: Type check run: npm run typecheck - name: I18n check run: npm run lint:i18n