89d64cb1173c276a81739f1e73cb5a1396e7decc
DevPack
📦 开发环境打包迁移工具 — 一键打包,随处开发
功能特性 • 快速开始 • 使用示例 • 用户手册 • 开发指南 • 贡献指南
🎯 项目简介
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 安装:
go install github.com/user/devpack@latest
Windows (Scoop):
scoop bucket add devpack https://github.com/user/devpack-bucket
scoop install devpack
macOS (Homebrew):
brew tap user/devpack
brew install devpack
从 Release 下载:
前往 Releases 页面下载对应平台的二进制文件。
快速上手
# 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
💻 使用示例
场景一:打包完整开发环境
# 扫描并预览将要打包的内容
devpack scan --verbose
# 创建完整环境快照
devpack capture --name "fullstack-2026" --all
# 导出
devpack export fullstack-2026 -o fullstack-2026.devpack
场景二:只打包特定工具链
# 只打包 Go + VS Code 相关配置
devpack capture --name "golang-env" \
--collectors runtime,editor \
--filter "runtime:go,editor:vscode"
场景三:团队环境标准化
# 团队 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 # 确认后还原
场景四:对比两台电脑的环境差异
# 在电脑 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) | 产品定位、用户画像、功能需求 |
| 架构设计文档 | 系统架构、核心模块、数据流 |
| 开发指南 | 开发环境搭建、编码规范、测试 |
| API 设计文档 | CLI 命令、内部 API、Pack 格式规范 |
| 开发路线图 | 版本规划与里程碑 |
| 用户手册 | 安装、使用、常见问题 |
| 贡献指南 | 如何参与项目开发 |
🤝 贡献
欢迎贡献代码、报告 Bug 或提出新功能建议!请查看 贡献指南 了解详情。
📄 许可证
本项目采用 MIT License 开源。
Built with ❤️ by DevPack Team
Languages
Go
97.7%
Makefile
2.3%
