This commit is contained in:
zyj
2026-03-03 18:20:18 +08:00
commit a9f9330744
25 changed files with 5004 additions and 0 deletions

558
docs/USER-GUIDE.md Normal file
View File

@@ -0,0 +1,558 @@
# DevPack 用户手册
> 版本v0.1.0
> 更新日期2026-03-03
---
## 目录
1. [简介](#1-简介)
2. [安装](#2-安装)
3. [快速入门](#3-快速入门)
4. [核心概念](#4-核心概念)
5. [命令详解](#5-命令详解)
6. [使用场景](#6-使用场景)
7. [配置文件](#7-配置文件)
8. [常见问题](#8-常见问题)
9. [故障排除](#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 安装
```bash
go install github.com/user/devpack@latest
```
### 2.2 通过包管理器安装
**Windows (Scoop):**
```powershell
scoop bucket add devpack https://github.com/user/devpack-bucket
scoop install devpack
```
**Windows (Chocolatey):**
```powershell
choco install devpack
```
**macOS (Homebrew):**
```bash
brew tap user/devpack
brew install devpack
```
### 2.3 下载二进制文件
1. 前往 [GitHub Releases](https://github.com/user/devpack/releases)
2. 下载对应你系统的压缩包
3. 解压到一个目录(如 `C:\Tools\devpack\`
4. 将该目录添加到系统 PATH
### 2.4 验证安装
```bash
devpack version
```
输出示例:
```
DevPack v0.1.0 (commit: abc1234, built: 2026-03-03)
OS: windows/amd64
```
---
## 3. 快速入门
### 3.1 五分钟上手
```bash
# 第一步:初始化
devpack init
# 第二步:扫描你的环境
devpack scan
# 第三步:打包
devpack capture --name "my-env"
# 第四步:导出为文件(可以拷贝到 U 盘)
devpack export my-env -o my-env.devpack
```
拿到 `.devpack` 文件后,在新电脑上:
```bash
# 第五步:安装 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 配置。
```bash
# 默认初始化
devpack init
# 使用 standard 模板
devpack init --template standard
# 指定 Profile 名称
devpack init --profile my-profile
```
这会在 `~/.devpack/` 下创建配置目录和默认配置文件。
### 5.2 devpack scan
扫描当前环境,展示检测到的开发工具和配置。
```bash
# 扫描所有
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。
```bash
# 基本用法
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 还原环境。
```bash
# 先预览
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
```bash
# 导出为文件
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
对比环境差异。
```bash
# 与当前环境对比
devpack diff my-env --current
# 两个 Pack 对比
devpack diff old-env --with new-env
# 只对比特定采集器
devpack diff my-env --current -c runtime
```
### 5.7 devpack list
```bash
# 列出所有 Pack
devpack list packs
# 列出所有 Profile
devpack list profiles
# 列出所有可用采集器
devpack list collectors
# 详细信息
devpack list packs --detailed
```
### 5.8 devpack profile
```bash
# 创建 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 个人换电脑
**场景:** 你买了一台新笔记本电脑,需要迁移开发环境。
**步骤:**
在旧电脑上:
```bash
devpack init
devpack scan --detailed # 确认要迁移的内容
devpack capture --name "laptop-2026" --all
devpack export laptop-2026 -o laptop-2026.devpack
```
`laptop-2026.devpack` 拷贝到 U 盘或通过网络传到新电脑。
在新电脑上:
```bash
# 先安装 DevPack
devpack import laptop-2026.devpack
devpack restore laptop-2026 --dry-run # 预览
devpack restore laptop-2026 # 开始还原
```
### 6.2 团队环境统一
**场景:** 你是 Tech Lead需要为团队准备统一的开发环境。
**步骤:**
1. 创建团队 Profile
```bash
devpack profile create team-standard
devpack profile edit team-standard
```
2. 在 Profile 中定义标准配置(编辑 YAML 文件)
3. 使用 Profile 打包:
```bash
devpack capture --name "team-env-v1" --profile team-standard
devpack export team-env-v1 -o team-env-v1.devpack
```
4. 分发给团队成员
5. 成员还原:
```bash
devpack import team-env-v1.devpack
devpack restore team-env-v1
```
### 6.3 项目环境隔离
**场景:** 你同时参与 Go 和 Python 项目,需要不同的环境配置。
**步骤:**
1. 为每个项目创建 Profile
```bash
devpack profile create golang-project
devpack profile create python-ml
```
2. 分别配置各 Profile 只包含对应工具链
3. 按项目打包:
```bash
devpack capture --name "go-env" --profile golang-project
devpack capture --name "ml-env" --profile python-ml
```
### 6.4 环境排障
**场景:** 同事说"在我电脑上能跑",你需要对比环境差异。
```bash
# 让同事导出环境
# (同事) 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 自定义配置示例
```yaml
# ~/.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 查看详细日志
```bash
# 开启详细输出
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](https://github.com/user/devpack/issues) 创建 Issue
4. 附上 debug 日志(注意删除敏感信息)