项目管理
了解 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 确保类型安全
- 运行代码检查和格式化
发布管理
- 使用语义化版本控制
- 自动生成变更日志
- 在预发布环境测试
- 监控发布后指标