Files
DevPack/README.md
2026-03-03 18:20:18 +08:00

274 lines
8.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>