Files
DevPack/docs/USER-GUIDE.md
2026-03-03 18:20:18 +08:00

13 KiB
Raw Permalink Blame History

DevPack 用户手册

版本v0.1.0
更新日期2026-03-03


目录

  1. 简介
  2. 安装
  3. 快速入门
  4. 核心概念
  5. 命令详解
  6. 使用场景
  7. 配置文件
  8. 常见问题
  9. 故障排除

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 下载二进制文件

  1. 前往 GitHub Releases
  2. 下载对应你系统的压缩包
  3. 解压到一个目录(如 C:\Tools\devpack\
  4. 将该目录添加到系统 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需要为团队准备统一的开发环境。

步骤:

  1. 创建团队 Profile
devpack profile create team-standard
devpack profile edit team-standard
  1. 在 Profile 中定义标准配置(编辑 YAML 文件)

  2. 使用 Profile 打包:

devpack capture --name "team-env-v1" --profile team-standard
devpack export team-env-v1 -o team-env-v1.devpack
  1. 分发给团队成员

  2. 成员还原:

devpack import team-env-v1.devpack
devpack restore team-env-v1

6.3 项目环境隔离

场景: 你同时参与 Go 和 Python 项目,需要不同的环境配置。

步骤:

  1. 为每个项目创建 Profile
devpack profile create golang-project
devpack profile create python-ml
  1. 分别配置各 Profile 只包含对应工具链

  2. 按项目打包:

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 报告问题

如果遇到无法解决的问题:

  1. 运行 devpack scan --log-level debug --save debug-info.json
  2. 查看 ~/.devpack/logs/devpack.log
  3. GitHub Issues 创建 Issue
  4. 附上 debug 日志(注意删除敏感信息)