jetify-com/devbox
GitHub: jetify-com/devbox
Devbox 是一个基于 Nix 的命令行工具,通过声明式配置为项目创建隔离、可移植且可复现的开发环境。
Stars: 12076 | Forks: 340
# Devbox
### 即时、简单且可预测的开发环境
## 它是什么?
[Devbox](https://www.jetify.com/devbox/) 是一个命令行工具,可以让你
轻松地为开发创建隔离的 shell。你首先需要定义你的
开发环境所需的软件包列表,然后 devbox 会使用该
定义为你的应用程序专门创建一个隔离的环境。
在实践中,Devbox 的工作方式类似于 `yarn` 之类的包管理器——不过它
管理的包处于操作系统级别(通常是你
使用 `brew` 或 `apt-get` 安装的那类东西)。通过 Devbox,你可以从 Nix 包
注册表中安装超过
[400,000 个软件包版本](https://www.nixhub.io)。
Devbox 最初由 [Jetify](https://www.jetify.com) 开发,其
内部由 `nix` 驱动。
## 演示
下面的示例创建了一个包含 `python 3.10` 和
`go 1.18` 的开发环境,即使底层
机器上并未安装这些软件包。你可以使用 `devbox run` 在环境中运行命令,或者使用
`devbox shell` 在其中启动一个交互式 shell:

## 安装 Devbox
使用以下安装脚本来获取最新版本的 Devbox:
```
curl -fsSL https://get.jetify.com/devbox | bash
```
在
[Devbox 文档](https://www.jetify.com/docs/devbox/installing-devbox/)中了解更多。
## 优势
### 为团队中的每个人提供一致的 shell
通过 `devbox.json` 文件声明你的项目所需的工具列表,并
运行 `devbox shell`。每个参与该项目的开发者都会获得一个
包含完全相同版本工具的 shell 环境。
### 尝试新工具而不污染你的笔记本电脑
Devbox 创建的开发环境与你的笔记本电脑上的其他所有内容
都是隔离的。有没有你想尝试但又不想弄得一团糟的工具?把它添加到
Devbox shell 中,当你不再需要它时将其移除——同时保持你的
笔记本电脑一尘不染。
### 不要牺牲速度
Devbox 可以直接在你的笔记本电脑上创建隔离的环境,而无需
额外的虚拟化层拖慢你的文件系统或每一条命令。当
你准备发布时,它会将其转换为等效的容器——但绝不会
提前这样做。
### 告别版本冲突
你是否在同时处理多个项目,并且所有项目都需要
同一个二进制文件的不同版本?与其尝试在你的
笔记本电脑上安装同一个二进制文件的冲突版本,不如为每个项目创建一个隔离的环境,并
在每个环境中使用你想要的任意版本。
### 随身携带你的环境
Devbox 的开发环境是_可移植的_。我们让你能够
精确地只声明一次你的
环境,并以多种不同的方式
使用该单一定义,包括:
- 通过 `devbox shell` 创建的本地 shell
- 可与 VSCode 一起使用的 devcontainer
- 一个 Dockerfile,让你能够使用与开发完全相同的工具来
构建生产镜像。
- 一个镜像你本地环境的云端远程
开发环境。
## 快速入门:快速、确定性的 Shell
在这个快速入门中,我们将创建一个安装了特定工具的
开发 shell。这些工具仅在使用此 Devbox shell 时
可用,从而确保我们不会污染你的机器。
1. 在一个新的空文件夹中打开终端。
2. 初始化 Devbox:
devbox init
这会在当前目录下创建一个 `devbox.json` 文件。你应该将其提交到
版本控制系统中。
3. 从 Nix 添加命令行工具。例如,要添加 Python 3.10:
devbox add python@3.10
在 [Nixhub.io](https://www.nixhub.io) 上搜索更多包
4. 你的 `devbox.json` 文件会记录你已添加的软件包,现在
它看起来应该是这样的:
{
"packages": [
"python@3.10"
]
}
5. 启动一个已安装这些工具的新 shell:
devbox shell
你可以通过 shell 提示符的变化来判断自己正处于 Devbox shell 中(而不是
你的常规终端中)。
6. 使用你最喜欢的工具。
在这个例子中我们安装了 Python 3.10,所以让我们来使用它。
python --version
7. 你的常规工具也可用,包括环境变量和
配置设置。
git config --get user.name
8. 要退出 Devbox shell 并返回到你的常规 shell:
exit
在
[Devbox 文档快速入门](https://www.jetify.com/docs/devbox/quickstart/)中了解更多。
## 其他命令
`devbox help` - 查看所有命令
有关
完整的命令列表,请参见
[CLI 参考](https://www.jetify.com/docs/devbox/cli-reference/devbox)。
## 相关工作
感谢 [Nix](https://nixos.org/) 提供隔离的 shell。
## 许可证
本项目自豪地以
[Apache 2.0 License](https://github.com/jetify-com/devbox/blob/main/LICENSE) 开源。
标签:EVTX分析, Nix, SOC Prime, 容器化/隔离, 开发工具, 日志审计, 环境管理, 请求拦截