项目管理

了解 Gemini CLI 如何使用 NPM 工作区、Lerna 和自动化 CI/CD 流程来管理其包、发布和开发工作流。

管理领域

项目管理的关键领域

NPM 工作区

使用 NPM 工作区管理多包项目

  • 统一依赖管理
  • 包间依赖解析
  • 共享开发工具
  • 简化构建流程

Lerna 集成

使用 Lerna 进行版本控制和发布

  • 自动版本管理
  • 变更日志生成
  • 批量发布包
  • 依赖关系追踪

CI/CD 流水线

自动化测试、构建和部署流程

  • 自动化测试
  • 代码质量检查
  • 自动发布
  • 部署监控

文档管理

维护项目文档和 API 参考

  • API 文档生成
  • 用户指南维护
  • 示例代码管理
  • 多语言支持

工作区结构

Gemini CLI 项目的组织结构

目录结构

gemini-cli/
├── packages/
│   ├── cli/                 # Main CLI package
│   │   ├── package.json
│   │   ├── src/
│   │   └── dist/
│   ├── core/                # Core functionality
│   │   ├── package.json
│   │   ├── src/
│   │   └── dist/
│   ├── tools/               # Built-in tools
│   │   ├── package.json
│   │   ├── src/
│   │   └── dist/
│   └── extensions/          # Extension system
│       ├── package.json
│       ├── src/
│       └── dist/
├── package.json             # Root workspace config
├── lerna.json              # Lerna configuration
├── tsconfig.json           # TypeScript config
└── .github/                # CI/CD workflows
    └── workflows/
        ├── test.yml
        ├── build.yml
        └── release.yml

根 package.json

{
  "name": "gemini-cli-workspace",
  "private": true,
  "workspaces": [
    "packages/*"
  ],
  "scripts": {
    "build": "lerna run build",
    "test": "lerna run test",
    "lint": "lerna run lint",
    "clean": "lerna clean",
    "bootstrap": "lerna bootstrap",
    "version": "lerna version",
    "publish": "lerna publish"
  },
  "devDependencies": {
    "lerna": "^6.0.0",
    "typescript": "^5.0.0",
    "@types/node": "^18.0.0"
  }
}

开发命令

管理项目的常用命令

开发命令

npm run bootstrap

安装所有包的依赖

npm run build

构建所有包

npm run test

运行所有测试

npm run lint

检查代码风格

发布命令

npm run version

更新包版本

npm run publish

发布包到 NPM

npm run changelog

生成变更日志

npm run clean

清理构建文件

发布工作流

自动化 CI/CD 流水线配置

GitHub Actions 工作流

name: Release

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '18'
          cache: 'npm'
      
      - run: npm ci
      - run: npm run build
      - run: npm run test
      - run: npm run lint

  release:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
          token: ${{ secrets.GITHUB_TOKEN }}
      
      - uses: actions/setup-node@v3
        with:
          node-version: '18'
          cache: 'npm'
          registry-url: 'https://registry.npmjs.org'
      
      - run: npm ci
      - run: npm run build
      
      - name: Configure Git
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"
      
      - name: Version and Publish
        run: |
          npm run version -- --conventional-commits --yes
          npm run publish -- --yes
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

最佳实践

有效项目管理的指导原则

代码质量

  • 遵循约定式提交消息
  • 保持测试覆盖率在 80% 以上
  • 使用 TypeScript 确保类型安全
  • 运行代码检查和格式化

发布管理

  • 使用语义化版本控制
  • 自动生成变更日志
  • 在预发布环境测试
  • 监控发布后指标

相关资源

了解更多关于贡献和开发的信息