实践项目:用 Gemini CLI 管理开发环境
项目目标
通过本章的实践项目,您将:
- 清理冗余依赖,释放磁盘空间
- 优化系统 PATH 配置
- 建立高效的 AI 辅助工作流
- 学会管理多个开发项目的环境
课程视频
观看 课程一和课程二的完整教学视频:
项目一:智能环境清理
许多开发者的电脑上都积累了大量不再使用的依赖和工具。让我们用 Gemini CLI 来一次彻底的清理。
项目背景
真实案例:一位开发者使用 Gemini CLI 后,成功清理了 50GB 的冗余文件,包括:
- 过时的 node_modules 文件夹
- 重复的全局 npm 包
- 废弃的开发工具
- 临时构建文件
实践步骤
- 步骤 1:环境扫描
- 步骤 2:识别冗余
- 步骤 3:执行清理
全面扫描本地环境
gemini chat
您:请帮我扫描本地所有的开发环境、依赖和库,列出详细清单
Gemini:开始扫描您的开发环境...
扫描结果:
1. Node.js 环境:
- 版本:v18.17.0, v16.20.0, v14.21.0
- 全局包:87 个(占用 2.3GB)
2. Python 环境:
- 版本:3.9.7, 3.8.10, 2.7.18
- pip 包:156 个(占用 4.1GB)
3. 项目文件夹:
- 检测到 23 个项目
- node_modules 总计:18.7GB
- 未使用超过 6 个月的:12 个
4. 开发工具:
- Docker 镜像:34 个(占用 12.3GB)
- VS Code 扩展:48 个
需要我详细分析哪个部分?
智能识别可清理项目
您:分析哪些是可以安全删除的冗余内容
Gemini:基于分析,以下内容可以安全删除:
可清理项目(预计释放 32.4GB):
1. 过时的 Node.js 版本:
- v14.21.0 - 已终止维护
- 保留 v18.17.0(LTS)
2. 重复的全局 npm 包:
- [email protected] - 使用 npx 代替
- [email protected] - 项目级安装更好
- [email protected] - 很久未使用
3. 废弃项目的 node_modules:
- ~/projects/old-todo-app (1.2GB)
- ~/projects/test-project-2022 (2.1GB)
- ~/experiments/abandoned-blog (1.8GB)
4. Docker 清理:
- 12 个悬空镜像 (4.2GB)
- 8 个停止的容器 (1.1GB)
建议保留:
- 最近 3 个月内使用的项目
- 生产环境相关工具
- 个人配置文件
要开始清理吗?
安全地执行清理操作
您:好的,请帮我执行清理,但要先备份重要配置
Gemini:明智的选择!我会先备份重要配置再清理。
备份阶段:
- 创建备份目录 ~/gemini-backup-2025-01-20
- 备份 .npmrc, .gitconfig
- 备份 VS Code 设置
- 导出已安装包列表
开始清理:
[1/5] 卸载过时 Node.js 版本...
已移除 v14.21.0
[2/5] 清理全局 npm 包...
卸载 create-react-app
卸载 [email protected]
卸载 gulp-cli
已释放:856MB
[3/5] 删除废弃项目...
删除 old-todo-app/node_modules
删除 test-project-2022/node_modules
删除 abandoned-blog/node_modules
已释放:5.1GB
[4/5] Docker 清理...
删除悬空镜像
删除停止的容器
已释放:5.3GB
[5/5] 清理系统缓存...
npm 缓存已清理
pip 缓存已清理
已释放:1.2GB
清理完成!
总计释放空间:32.4GB
备份位置:~/gemini-backup-2025-01-20
项目成果
| 指标 | 结果 |
|---|---|
| 空间释放 | 32.4GB / 50GB |
| npm 命令响应速度 | 提升 40% |
| 系统 启动时间 | 减少 15 秒 |
| 开发工具运行 | 更流畅 |
项目二:PATH 环境优化
混乱的 PATH 配置会导致命令冲突和性能问题。让我们用 AI 来优化它。
常见 PATH 问题
- 重复路径:同一路径被多次添加,影响查找效率
- 无效路径:指向不存在的目录,导致命令查找失败
- 顺序混乱:优先级设置不当,可能使用错误版本的工具
优化实践
- 分析 PATH
- 执行优化
- 验证结果
您:帮我分析系统 PATH,找出所有问题
Gemini:正在分析您的 PATH 配置...
PATH 分析报告:
当前 PATH 条目(按顺序):
1. /usr/local/bin
2. /opt/homebrew/bin
3. /usr/local/bin [重复]
4. ~/.npm-global/bin
5. /usr/bin
6. /opt/old-tools/bin [不存在]
7. ~/.npm-global/bin [重复]
8. /usr/local/go/bin
9. /Applications/Docker.app/Contents/Resources/bin [Docker未安装]
10. /usr/local/bin [第3次重复]
问题汇总:
- 3 个重复条目
- 2 个无效路径
- 建议调整优先级顺序
优化建议:
1. 用户级工具应优先于系统级
2. 常用工具路径应该靠前
3. 删除所有重复和无效条目
您:请帮我优化 PATH 配置
Gemini:我来帮您优化 PATH 配置。
优化方案:
新的 PATH 顺序(从高到低优先级):
1. ~/.local/bin # 用户自定义脚本
2. /opt/homebrew/bin # Homebrew(macOS)
3. ~/.npm-global/bin # npm 全局包
4. /usr/local/go/bin # Go 语言
5. /usr/local/bin # 本地安装
6. /usr/bin # 系统命令
正在应用更改...
检测到您使用的是 zsh,更新 ~/.zshrc:
- 备份原始 .zshrc 到 .zshrc.backup
- 清理重复的 export PATH 语句
- 添加优化后的 PATH 配置
- 添加注释说明每个路径的用途
# 优化后的配置
export PATH="$HOME/.local/bin:$PATH"
export PATH="/opt/homebrew/bin:$PATH"
export PATH="$HOME/.npm-global/bin:$PATH"
export PATH="/usr/local/go/bin:$PATH"
优化完成!
执行以下命令使更改生效:
source ~/.zshrc
或重新打开终端窗口。
您:验证 PATH 优化结果
Gemini:让我验证优化后的 PATH 配置...
验证结果:
1. 重复检查:
无重复路径
2. 有效性检查:
所有路径均存在且可访问
3. 命令可用性测试:
node: /opt/homebrew/bin/node (v18.17.0)
npm: /opt/homebrew/bin/npm (v9.8.1)
git: /usr/bin/git (v2.39.3)
python: /usr/bin/python3 (v3.11.6)
go: /usr/local/go/bin/go (v1.21.5)
4. 性能测试:
命令查找时间:
优化前:平均 23ms
优化后:平均 8ms
提升 65%
5. 潜在冲突检查:
未发现命令版本冲突
PATH 优化成功!您的开发环境现在更加高效。
项目三:Git 工作 流自动化
告别繁琐的 Git 命令,让 AI 处理所有版本控制操作。
场景实践
- 日常开发
- 解决冲突
- 代码审查
场景:早晨开始工作
您:早上好,我要继续昨天的功能开发
Gemini:早上好!让我帮您准备开发环境。
检查项目状态...
项目:awesome-web-app
当前分支:feature/user-auth
未提交更改:3 个文件
昨日工作总结:
- 完成了登录表单 UI
- 添加了表单验证逻辑
- TODO: 连接后端 API
今日建议:
1. 先提交昨天的更改
2. 拉取主分支最新代码
3. 继续 API 集成工作
要我帮您执行这些操作吗?
您:好的,先提交昨天的更改
Gemini:正在提交您的更改...
查看更改内容:
- src/components/LoginForm.jsx (新增)
- src/utils/validation.js (新增)
- src/styles/auth.css (新增)
生成提交信息:
"feat: 实现用户登录表单UI和验证逻辑
- 创建响应式登录表单组件
- 添加邮箱和密码验证规则
- 应用自定义样式主题"
更改已提交
推送到远程仓库
现在拉取最新代码...
主分支已更新,无冲突
您可以开始今天的开发了!
场景:处理合并冲突
您:拉取主分支代码并合并
Gemini:正在执行合并操作...
检测到合并冲突!
冲突文件:
1. src/config/api.js
2. package.json
让我帮您分析冲突:
src/config/api.js 的冲突:
<<<<<<< HEAD (您的更改)
const API_BASE = 'http://localhost:3000/api'
const AUTH_ENDPOINT = '/auth/login'
=======
const API_BASE = 'https://api.example.com'
const AUTH_ENDPOINT = '/v2/auth/signin'
>>>>>>> main
分析:看起来主分支更新了 API 地址到生产环境。
建议解决方案:
const API_BASE = process.env.REACT_APP_API_URL || 'http://localhost:3000/api'
const AUTH_ENDPOINT = '/v2/auth/signin'
这样可以同时支持开发和生产环境。
要应用这个解决方案吗?
您:应用建议的解决方案
Gemini:正在解决冲突...
已更新 src/config/api.js
已解决 package.json(保留两边的新依赖)
冲突解决完成!现在提交合并结果...
合并提交完成
推送到远程仓库
您的分支现在与主分支保持同步!
场景:准备代码审查
您:我完成了用户认证功能,帮我准备代码审查
Gemini:好的,我来帮您准备代码审查。
功能开发总结:
分支:feature/user-auth
提交数:8 个
修改文件:15 个
新增代码:+542 行
删除代码:-87 行
代码质量检查:
1. 代码规范:
ESLint 检查通过
格式化符合标准
2. 测试 覆盖:
当前覆盖率:72%
建议:添加错误处理的测试用例
3. 安全检查:
未发现硬编码密钥
API 调用使用 HTTPS
建议:添加请求速率限制
4. 性能考虑:
组件使用 React.memo 优化
API 请求有适当的缓存
生成 PR 描述:
## 概述
实现了完整的用户认证功能,包括登录、注册和会话管理。
## 更改内容
- 新增登录/注册表单组件
- 实现 JWT token 管理
- 添加认证相关 UI 样式
- 优化 API 请求性能
## 测试
- 单元测试覆盖率 72%
- 手动测试各种边界情况
- 兼容性测试通过
要创建 Pull Request 吗?
项目四:构建个人工作流
每个开发者都有独特的工作习惯。让我们用 Gemini CLI 打造专属的自动化工作流。