274 lines
8.2 KiB
Markdown
274 lines
8.2 KiB
Markdown
<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>
|