什么是 Devbox?
Devbox 是由 Jetify 开发的一个工具,核心目标是让开发者在不同机器上快速搭建一致的本地开发环境。它通过 Nix 包管理器管理软件包,确保项目之间的依赖不会冲突,同时提供隔离的 shell 环境。
1. 安装 Devbox
安装是使用 Devbox 的第一步,您需要从官方源下载并运行安装脚本。
命令
curl -fsSL https://get.jetify.com/devbox | bash
功能说明
- 这条命令会从 Jetify 官方服务器下载 Devbox 的安装脚本并在您的系统中执行。
- 安装完成后,Devbox 将可用作命令行工具。
注意事项
- 系统要求:确保您的终端支持 bash 或兼容的 shell(如 zsh)。
- 验证安装:安装完成后,运行以下命令检查版本:
scss
devbox --version
//输出示例:devbox version 0.10.0。
2. 初始化 Devbox 项目
在开始使用 Devbox 之前,您需要为项目创建一个配置文件。 命令 devbox init
功能说明
- 在当前项目目录中运行此命令,会生成一个名为 devbox.json 的配置文件。
- devbox.json 是 Devbox 的核心文件,用于定义项目的开发环境,包括软件包、环境变量和 shell 配置。
输出示例
生成的文件内容类似于:
json
{
"packages": [],
"env": {},
"shell": {}
}
使用建议
- 版本控制:建议将 devbox.json 提交到版本控制系统(如 Git),以便团队成员共享相同的环境配置。
- 注意事项:如果当前目录已存在 devbox.json,命令会提示是否覆盖现有文件。
3. 搜索和添加软件包
Devbox 允许您从 Nix 包管理器中搜索并添加所需的软件包到开发环境中。
3.1 搜索软件包
命令
devbox search <关键词>
功能说明
- 用于在 Nix 包管理器的软件包库中搜索与关键词相关的包。
- 搜索结果会列出可用包的名称和版本。
示例
- 搜索 Python 相关的包:
arduino
devbox search python3
//输出示例:列出 python3.9、python3.10 等可用版本。
3.2 添加软件包
命令
devbox add <软件包>
功能说明
- 将指定的软件包添加到开发环境中,并更新 devbox.json 的 packages 字段。
- 添加的包仅在 Devbox shell 中可用,不会影响系统全局环境。
示例
- 添加最新版本的 ripgrep:
csharp
devbox add ripgrep
- 添加特定版本的 Python:
sql
devbox add [email protected]
注意事项
- 软件包名称和版本号需要与 Nix 包管理器中的定义一致。
- 添加后,devbox.json 的 packages 字段会更新,例如:
perl
{
"packages": ["[email protected]", "ripgrep"]
}
4. 启动 Devbox 开发环境
配置好软件包后,您可以通过启动 Devbox shell 使用这些工具。
命令
devbox shell
功能说明
- 这条命令会启动一个新的 shell 环境,其中包含 devbox.json 中定义的所有软件包。
- 第一次运行时,Devbox 会下载并安装所需的包,可能会稍耗时。
使用示例
- 在 shell 中验证 Python 版本:
scss
python --version
//输出示例:Python 3.10.0。
- 运行 ripgrep:
css
rg --version
特点
- 隔离性:Devbox shell 不会干扰系统全局环境。
- 兼容性:您的本地环境变量和配置文件(如 ~/.bashrc)仍然可用。
退出 shell
bash
exit
- 这会关闭 Devbox shell,返回到您的常规终端。
5. 管理 Devbox 配置
Devbox 的强大之处在于其灵活的配置管理,您可以通过编辑 devbox.json 定制开发环境。
5.1 设置环境变量
配置方法
在 devbox.json 中添加 env 字段:
json
{
"env": {
"MY_VAR": "value"
}
}
功能说明
- 定义的环境变量会在 Devbox shell 中生效。
- 适合设置 API 密钥、路径等。
使用示例
在 shell 中运行:
php
echo $MY_VAR
//输出:value。
5.2 定义 Shell 钩子
配置方法
在 devbox.json 的 shell 字段中添加 init_hook:
json
{
"shell": {
"init_hook": "echo 'Welcome to Devbox!'"
}
}
功能说明
- init_hook 会在每次启动 Devbox shell 时运行指定的命令。
- 适合初始化环境或显示欢迎信息。
输出示例
启动 devbox shell 时,您会看到:
css
Welcome to Devbox!
5.3 创建脚本
配置方法
在 devbox.json 的 shell 字段中添加 scripts:
json
{
"shell": {
"scripts": {
"start": "python main.py"
}
}
}
功能说明
- 定义可在项目中运行的脚本。
- 使用 devbox run <脚本名> 执行。
使用示例
运行:
arduino
devbox run start
这会执行 python main.py。
5.4 秘密管理
命令
devbox secrets init
功能说明
- 初始化 Jetify Secrets,用于安全管理敏感信息(如 API 密钥)。
- 需要 Jetify Cloud 账户支持。
6. 其他实用命令
Devbox 提供了一些额外的命令,增强使用体验。
查看帮助
bash
devbox help
- 显示所有可用命令的列表。
查看版本
markdown
devbox version
- 显示当前 Devbox 的版本号。
全局包管理
- 添加全局包:
sql
devbox global add <包>
//示例:devbox global add nodejs
- 将全局包添加到当前 shell:
csharp
. <(devbox global shellenv)
生成 Dockerfile
markdown
devbox dockerfile
- 根据当前配置生成一个 Dockerfile,确保生产环境与开发环境一致。
7. 共享和协作
Devbox 的设计非常适合团队协作。
提交配置文件
- 将 devbox.json 和 devbox.lock 文件提交到版本控制系统。
- 作用:devbox.lock 锁定软件包的精确版本,确保团队成员环境一致。
添加 Devbox md
在项目的 README.md 中添加:
ruby
[](https://www.jetify.com/devbox/docs/contributor-quickstart/)
- 表明项目使用 Devbox,提升可读性。