This commit is contained in:
zyj
2026-03-03 18:20:18 +08:00
commit a9f9330744
25 changed files with 5004 additions and 0 deletions

273
README.md Normal file
View File

@@ -0,0 +1,273 @@
<p align="center">
<img src="docs/assets/logo-placeholder.png" alt="DevPack Logo" width="200"/>
</p>
<h1 align="center">DevPack</h1>
<p align="center">
<strong>📦 开发环境打包迁移工具 — 一键打包,随处开发</strong>
</p>
<p align="center">
<a href="#功能特性">功能特性</a> •
<a href="#快速开始">快速开始</a> •
<a href="#使用示例">使用示例</a> •
<a href="docs/USER-GUIDE.md">用户手册</a> •
<a href="docs/DEVELOPMENT.md">开发指南</a> •
<a href="docs/CONTRIBUTING.md">贡献指南</a>
</p>
---
## 🎯 项目简介
**DevPack** 是一个用 Go 编写的跨平台开发环境打包迁移工具。它能够扫描、捕获并打包你当前电脑上的完整开发环境包括编程语言运行时、包管理器、IDE 配置、Shell 设置、环境变量等),生成一个可移植的 `.devpack` 文件,在另一台同系统的电脑上一键还原,让你在几分钟内恢复完整的开发环境。
### 为什么需要 DevPack
每个开发者都经历过这样的痛苦:
- 🖥️ **换新电脑** — 花一整天甚至几天重新搭建开发环境
- 🔧 **装了什么?** — 记不清装了哪些工具、配了哪些参数
- 👥 **团队协作** — 新成员入职需要漫长的环境配置过程
- 📋 **环境不一致** — "在我电脑上能跑"的经典问题
DevPack 就像给你的开发环境拍一张"快照",随时随地还原。
### DevPack vs Docker
| 特性 | DevPack | Docker |
|------|---------|--------|
| 目标 | 打包**宿主机开发环境** | 打包**应用运行环境** |
| 使用场景 | 电脑迁移、环境备份 | 应用部署、环境隔离 |
| 捕获内容 | IDE设置、Shell配置、工具链 | 应用代码、依赖、系统库 |
| 运行方式 | 直接还原到宿主机 | 运行在容器中 |
| 性能开销 | 无 | 有(虚拟化层) |
| 学习成本 | 低 | 中等 |
> 💡 DevPack 不是 Docker 的替代品而是补充。Docker 解决"应用如何部署"DevPack 解决"开发者如何迁移"。
---
## ✨ 功能特性
### 🔍 智能扫描
- 自动检测已安装的编程语言、框架、工具
- 识别包管理器及已安装的包Scoop、Chocolatey、Winget、Homebrew、APT 等)
- 捕获 IDE/编辑器配置VS Code 扩展与设置、JetBrains 设置等)
- 收集 Shell 配置PowerShell Profile、.bashrc、.zshrc 等)
### 📦 一键打包
- 生成可移植的 `.devpack` 打包文件
- 支持选择性打包(只打包你需要的部分)
- 敏感数据加密存储SSH 密钥、Token 等)
- 增量打包,节省空间
### 🚀 快速还原
- 自动依赖解析与安装顺序管理
- 冲突检测与智能合并
- 干运行模式(预览将做的更改)
- 回滚机制(还原失败可撤销)
### 🧩 插件化架构
- 内置丰富的采集器插件
- 支持自定义采集器开发
- 社区插件生态
### 📊 环境管理
- 命名配置文件Profile管理
- 环境差异对比
- 环境版本历史
---
## 📋 系统要求
| 操作系统 | 最低版本 | 架构 |
|---------|---------|------|
| Windows | 10 1903+ | x64, ARM64 |
| macOS | 11 Big Sur+ | x64, ARM64 (Apple Silicon) |
| Linux | Ubuntu 20.04+ / CentOS 8+ | x64, ARM64 |
---
## 🚀 快速开始
### 安装
**使用 Go 安装:**
```bash
go install github.com/user/devpack@latest
```
**Windows (Scoop)**
```powershell
scoop bucket add devpack https://github.com/user/devpack-bucket
scoop install devpack
```
**macOS (Homebrew)**
```bash
brew tap user/devpack
brew install devpack
```
**从 Release 下载:**
前往 [Releases](https://github.com/user/devpack/releases) 页面下载对应平台的二进制文件。
### 快速上手
```bash
# 1. 初始化(创建默认配置文件)
devpack init
# 2. 扫描当前环境
devpack scan
# 3. 打包开发环境
devpack capture --name "my-dev-env"
# 4. 导出为可移植文件
devpack export my-dev-env -o my-dev-env.devpack
# 5. 在新电脑上还原
devpack import my-dev-env.devpack
devpack restore my-dev-env
```
---
## 💻 使用示例
### 场景一:打包完整开发环境
```bash
# 扫描并预览将要打包的内容
devpack scan --verbose
# 创建完整环境快照
devpack capture --name "fullstack-2026" --all
# 导出
devpack export fullstack-2026 -o fullstack-2026.devpack
```
### 场景二:只打包特定工具链
```bash
# 只打包 Go + VS Code 相关配置
devpack capture --name "golang-env" \
--collectors runtime,editor \
--filter "runtime:go,editor:vscode"
```
### 场景三:团队环境标准化
```bash
# 团队 Lead 导出标准开发环境
devpack capture --name "team-standard" --profile team.yaml
devpack export team-standard -o team-standard.devpack
# 新成员导入并还原
devpack import team-standard.devpack
devpack restore team-standard --dry-run # 先预览
devpack restore team-standard # 确认后还原
```
### 场景四:对比两台电脑的环境差异
```bash
# 在电脑 A 上导出
devpack capture --name "pc-a"
devpack export pc-a -o pc-a.devpack
# 在电脑 B 上对比
devpack import pc-a.devpack
devpack diff pc-a --current
```
---
## 🏗️ 项目结构
```
DevPack/
├── cmd/ # CLI 入口与命令定义
│ └── devpack/
│ ├── main.go
│ └── commands/ # 各子命令实现
├── internal/ # 内部包(不对外暴露)
│ ├── collector/ # 采集器核心
│ │ ├── registry.go # 采集器注册中心
│ │ ├── runtime/ # 运行时采集器Go, Node, Python...
│ │ ├── editor/ # 编辑器采集器VS Code, JetBrains...
│ │ ├── shell/ # Shell 采集器
│ │ ├── package/ # 包管理器采集器
│ │ ├── git/ # Git 配置采集器
│ │ ├── env/ # 环境变量采集器
│ │ ├── font/ # 字体采集器
│ │ └── ssh/ # SSH/GPG 密钥采集器
│ ├── pack/ # 打包/解包引擎
│ ├── restore/ # 还原引擎
│ ├── profile/ # 配置文件管理
│ ├── diff/ # 环境差异对比
│ ├── crypto/ # 加密模块
│ ├── platform/ # 平台适配层
│ │ ├── windows/
│ │ ├── darwin/
│ │ └── linux/
│ └── config/ # 应用配置
├── pkg/ # 可对外使用的公共包
│ ├── manifest/ # Pack 清单格式定义
│ └── version/ # 版本信息
├── plugins/ # 外部插件目录
├── docs/ # 项目文档
│ ├── PRD.md # 产品需求文档
│ ├── ARCHITECTURE.md # 架构设计文档
│ ├── DEVELOPMENT.md # 开发指南
│ ├── API.md # API 设计文档
│ ├── ROADMAP.md # 开发路线图
│ ├── USER-GUIDE.md # 用户手册
│ └── CONTRIBUTING.md # 贡献指南
├── test/ # 集成测试
├── scripts/ # 构建与工具脚本
├── .github/ # GitHub Actions CI/CD
├── go.mod
├── go.sum
├── Makefile
├── LICENSE
└── README.md
```
---
## 📖 文档
| 文档 | 说明 |
|------|------|
| [产品需求文档 (PRD)](docs/PRD.md) | 产品定位、用户画像、功能需求 |
| [架构设计文档](docs/ARCHITECTURE.md) | 系统架构、核心模块、数据流 |
| [开发指南](docs/DEVELOPMENT.md) | 开发环境搭建、编码规范、测试 |
| [API 设计文档](docs/API.md) | CLI 命令、内部 API、Pack 格式规范 |
| [开发路线图](docs/ROADMAP.md) | 版本规划与里程碑 |
| [用户手册](docs/USER-GUIDE.md) | 安装、使用、常见问题 |
| [贡献指南](docs/CONTRIBUTING.md) | 如何参与项目开发 |
---
## 🤝 贡献
欢迎贡献代码、报告 Bug 或提出新功能建议!请查看 [贡献指南](docs/CONTRIBUTING.md) 了解详情。
---
## 📄 许可证
本项目采用 [MIT License](LICENSE) 开源。
---
<p align="center">
<sub>Built with ❤️ by DevPack Team</sub>
</p>