13 KiB
DevPack 用户手册
版本:v0.1.0
更新日期:2026-03-03
目录
1. 简介
DevPack 是一个开发环境打包迁移工具。它可以:
- 🔍 扫描 你当前电脑上安装的开发工具、配置、环境变量等
- 📦 打包 成一个可移植的
.devpack文件 - 🚀 还原 在另一台电脑上一键恢复完整开发环境
支持的内容
| 类别 | 支持的项目 |
|---|---|
| 编程语言 | Go, Node.js, Python, Java, Rust, .NET, Ruby, PHP |
| 包管理器 | Scoop, Chocolatey, Winget, Homebrew, APT |
| 编辑器 | VS Code (扩展+设置), JetBrains IDEs, Vim/Neovim |
| Shell | PowerShell, Bash, Zsh, Fish, Windows Terminal |
| 其他 | Git 配置, 环境变量, SSH 密钥, 字体 |
2. 安装
2.1 通过 Go 安装
go install github.com/user/devpack@latest
2.2 通过包管理器安装
Windows (Scoop):
scoop bucket add devpack https://github.com/user/devpack-bucket
scoop install devpack
Windows (Chocolatey):
choco install devpack
macOS (Homebrew):
brew tap user/devpack
brew install devpack
2.3 下载二进制文件
- 前往 GitHub Releases
- 下载对应你系统的压缩包
- 解压到一个目录(如
C:\Tools\devpack\) - 将该目录添加到系统 PATH
2.4 验证安装
devpack version
输出示例:
DevPack v0.1.0 (commit: abc1234, built: 2026-03-03)
OS: windows/amd64
3. 快速入门
3.1 五分钟上手
# 第一步:初始化
devpack init
# 第二步:扫描你的环境
devpack scan
# 第三步:打包
devpack capture --name "my-env"
# 第四步:导出为文件(可以拷贝到 U 盘)
devpack export my-env -o my-env.devpack
拿到 .devpack 文件后,在新电脑上:
# 第五步:安装 DevPack 后,导入文件
devpack import my-env.devpack
# 第六步:预览将要做的更改
devpack restore my-env --dry-run
# 第七步:正式还原
devpack restore my-env
3.2 推荐工作流
旧电脑 新电脑
────── ──────
devpack init (安装 DevPack)
│ │
devpack scan │
│ │
devpack capture --name env │
│ │
devpack export env │
│ │
└── my-env.devpack ──(U盘)──▶ │
│
devpack import my-env.devpack
│
devpack restore env --dry-run
│
devpack restore env
│
✅ 环境就绪!
4. 核心概念
4.1 Pack(环境包)
Pack 是 DevPack 生成的打包文件(.devpack 格式)。它包含:
- Manifest — 描述包内容的清单
- 采集器数据 — 各个采集器收集的环境数据
- 校验信息 — 确保文件完整性
一个 Pack 代表某一时刻你的开发环境的"快照"。
4.2 Profile(配置方案)
Profile 定义了"打包什么"和"怎么打包"。通过 Profile,你可以:
- 只打包特定的工具链(如只打包 Go + VS Code)
- 排除不需要的内容
- 为不同场景准备不同的配置方案
内置 Profile 模板:
| 模板 | 包含内容 |
|---|---|
minimal |
只有编辑器设置和 Shell 配置 |
standard |
运行时 + 编辑器 + Shell + Git + 环境变量 |
full |
所有可用的采集器 |
4.3 Collector(采集器)
采集器是负责扫描和收集特定类型环境信息的模块。每个采集器独立工作:
| 采集器 | 扫描内容 | 还原方式 |
|---|---|---|
go |
Go 版本、go env、GOPATH/bin 工具 | 下载安装器 |
node |
Node 版本、npm 全局包 | nvm/直接安装 |
python |
Python 版本、pip 全局包 | 安装器/pyenv |
vscode |
扩展列表、settings.json | code --install-extension |
powershell |
Profile、已安装模块 | 复制 Profile + Install-Module |
scoop |
bucket 列表、已安装包 | scoop install |
git |
.gitconfig、aliases | 复制配置 |
env |
用户环境变量 | setx/export |
4.4 还原策略
当还原时遇到已存在的配置,DevPack 提供多种处理策略:
| 策略 | 行为 |
|---|---|
skip |
跳过,保留现有配置 |
overwrite |
覆盖,使用 Pack 中的配置 |
merge |
合并两者(适用于配置文件) |
prompt |
逐项询问用户(默认) |
newest |
使用较新的版本 |
5. 命令详解
5.1 devpack init
初始化 DevPack 配置。
# 默认初始化
devpack init
# 使用 standard 模板
devpack init --template standard
# 指定 Profile 名称
devpack init --profile my-profile
这会在 ~/.devpack/ 下创建配置目录和默认配置文件。
5.2 devpack scan
扫描当前环境,展示检测到的开发工具和配置。
# 扫描所有
devpack scan
# 详细模式
devpack scan --detailed
# 只扫描运行时
devpack scan --category runtime
# 只扫描特定采集器
devpack scan -c go,node,vscode
# 输出为 JSON
devpack scan -o json
# 保存扫描结果
devpack scan --save my-scan.json
5.3 devpack capture
捕获环境数据并创建 Pack。
# 基本用法
devpack capture --name "my-env"
# 使用 Profile
devpack capture --name "go-env" --profile golang-dev
# 捕获所有
devpack capture --name "full-env" --all
# 只捕获特定采集器
devpack capture --name "editor-env" -c vscode,git
# 带描述和标签
devpack capture --name "v1" \
--description "生产环境工具链" \
--tag golang,production
5.4 devpack restore
从 Pack 还原环境。
# 先预览
devpack restore my-env --dry-run
# 执行还原
devpack restore my-env
# 跳过冲突项
devpack restore my-env --conflict skip
# 覆盖所有冲突
devpack restore my-env --conflict overwrite
# 只还原特定采集器
devpack restore my-env -c vscode,git
# 跳过确认
devpack restore my-env -y
5.5 devpack export / import
# 导出为文件
devpack export my-env -o ~/Desktop/my-env.devpack
# 导入文件
devpack import ~/Desktop/my-env.devpack
# 导入并指定名称
devpack import ~/Desktop/my-env.devpack --name imported-env
# 导入前验证
devpack import ~/Desktop/my-env.devpack --verify
5.6 devpack diff
对比环境差异。
# 与当前环境对比
devpack diff my-env --current
# 两个 Pack 对比
devpack diff old-env --with new-env
# 只对比特定采集器
devpack diff my-env --current -c runtime
5.7 devpack list
# 列出所有 Pack
devpack list packs
# 列出所有 Profile
devpack list profiles
# 列出所有可用采集器
devpack list collectors
# 详细信息
devpack list packs --detailed
5.8 devpack profile
# 创建 Profile
devpack profile create my-profile
# 查看 Profile
devpack profile show my-profile
# 编辑 Profile(使用默认编辑器打开)
devpack profile edit my-profile
# 设置默认 Profile
devpack profile use my-profile
# 删除 Profile
devpack profile delete my-profile
# 列出所有 Profile
devpack profile list
6. 使用场景
6.1 个人换电脑
场景: 你买了一台新笔记本电脑,需要迁移开发环境。
步骤:
在旧电脑上:
devpack init
devpack scan --detailed # 确认要迁移的内容
devpack capture --name "laptop-2026" --all
devpack export laptop-2026 -o laptop-2026.devpack
将 laptop-2026.devpack 拷贝到 U 盘或通过网络传到新电脑。
在新电脑上:
# 先安装 DevPack
devpack import laptop-2026.devpack
devpack restore laptop-2026 --dry-run # 预览
devpack restore laptop-2026 # 开始还原
6.2 团队环境统一
场景: 你是 Tech Lead,需要为团队准备统一的开发环境。
步骤:
- 创建团队 Profile:
devpack profile create team-standard
devpack profile edit team-standard
-
在 Profile 中定义标准配置(编辑 YAML 文件)
-
使用 Profile 打包:
devpack capture --name "team-env-v1" --profile team-standard
devpack export team-env-v1 -o team-env-v1.devpack
-
分发给团队成员
-
成员还原:
devpack import team-env-v1.devpack
devpack restore team-env-v1
6.3 项目环境隔离
场景: 你同时参与 Go 和 Python 项目,需要不同的环境配置。
步骤:
- 为每个项目创建 Profile:
devpack profile create golang-project
devpack profile create python-ml
-
分别配置各 Profile 只包含对应工具链
-
按项目打包:
devpack capture --name "go-env" --profile golang-project
devpack capture --name "ml-env" --profile python-ml
6.4 环境排障
场景: 同事说"在我电脑上能跑",你需要对比环境差异。
# 让同事导出环境
# (同事) devpack capture --name "alice-env" && devpack export alice-env
# 你导入并对比
devpack import alice-env.devpack
devpack diff alice-env --current
差异输出会清晰展示两个环境的不同之处。
7. 配置文件
7.1 配置文件位置
| 文件 | 路径 | 说明 |
|---|---|---|
| 全局配置 | ~/.devpack/config.yaml |
DevPack 全局设置 |
| Profile | ~/.devpack/profiles/<name>.yaml |
命名配置方案 |
| 日志 | ~/.devpack/logs/devpack.log |
运行日志 |
| Pack 存储 | ~/.devpack/packs/ |
本地 Pack 存储 |
7.2 自定义配置示例
# ~/.devpack/config.yaml
defaults:
profile: "standard"
compression: "gzip"
conflict_strategy: "prompt"
logging:
level: "info"
ui:
color: true
progress_bar: true
security:
scan_for_secrets: true
exclude_patterns:
- "*_KEY"
- "*_SECRET"
- "*_TOKEN"
8. 常见问题
Q: DevPack 和 Docker 有什么区别?
Docker 用于打包应用运行环境,应用运行在容器中;DevPack 用于打包开发者的本地开发环境,直接还原到宿主机。两者是互补关系。
Q: 支持跨操作系统迁移吗?
不支持。DevPack 只支持同一操作系统之间的迁移(Windows → Windows, macOS → macOS)。不同操作系统的工具链和配置差异太大,无法可靠地自动转换。
Q: 还原会覆盖我现有的配置吗?
默认不会。DevPack 使用 prompt 策略,遇到冲突会询问你如何处理。你也可以先使用 --dry-run 预览所有更改。
Q: Pack 文件大小一般多大?
典型的开发环境 Pack 大小在 5-50 MB 之间。Pack 文件只包含配置信息和元数据,不包含实际的安装程序二进制文件(还原时会从网络下载)。
Q: 密码和密钥安全吗?
DevPack 默认不采集 SSH 密钥和密码。如果你选择采集 SSH 密钥,它们会使用 AES-256-GCM 加密存储。DevPack 不会采集浏览器密码、系统凭证等隐私数据。
Q: 还原需要网络连接吗?
是的。还原过程需要从网络下载对应版本的安装程序。Pack 文件只包含"安装什么"的信息,不包含安装程序本身。
Q: 还原失败了怎么办?
如果开启了还原点功能(默认开启),可以使用 devpack rollback 撤销所有更改,回到还原前的状态。
9. 故障排除
9.1 查看详细日志
# 开启详细输出
devpack scan --verbose
# 开启 debug 日志
devpack scan --log-level debug
# 查看日志文件
# Windows
notepad %USERPROFILE%\.devpack\logs\devpack.log
# macOS/Linux
cat ~/.devpack/logs/devpack.log
9.2 常见错误
| 错误 | 原因 | 解决方案 |
|---|---|---|
collector not available |
对应的工具未安装 | 安装对应工具或排除该采集器 |
pack file corrupted |
Pack 文件损坏 | 使用 devpack verify 检查,重新导出 |
platform mismatch |
Pack 的系统与当前不一致 | 只能在相同 OS 之间还原 |
permission denied |
权限不足 | 以管理员身份运行 |
network timeout |
下载超时 | 检查网络,或设置代理 |
9.3 报告问题
如果遇到无法解决的问题:
- 运行
devpack scan --log-level debug --save debug-info.json - 查看
~/.devpack/logs/devpack.log - 在 GitHub Issues 创建 Issue
- 附上 debug 日志(注意删除敏感信息)