Devbox - Cheatsheet de Ambientes de Desenvolvimento Reproduzíveis
Devbox (por Jetify) cria ambientes de desenvolvimento isolados e reproduzíveis sem Docker ou máquinas virtuais. É alimentado por Nix mas esconde a linguagem Nix atrás de um config JSON simples (devbox.json) e um CLI familiar — você executa devbox add nodejs@20 em vez de escrever uma derivação Nix. O resultado: todos na equipe (e CI) obtêm exatamente a mesma cadeia de ferramentas, fixadas a versões precisas, isoladas do sistema host.
Instalação
Começando
| Comando | Descrição |
|---|
devbox init | Crie um devbox.json no projeto |
devbox add nodejs@20 python@3.12 | Adicione pacotes (versões fixadas) |
devbox rm python | Remova um pacote |
devbox install | Instale tudo em devbox.json |
devbox shell | Insira o ambiente isolado |
devbox run <script> | Execute um script definido dentro do env |
Gerenciando Pacotes
| Comando | Descrição |
|---|
devbox add go@1.22 | Adicione uma versão específica |
devbox search postgresql | Pesquise o catálogo de pacotes Nix |
devbox list | Liste pacotes instalados |
devbox update | Atualize pacotes para o mais recente permitido |
devbox info nodejs | Mostre detalhes de um pacote |
Versões se resolvem contra o catálogo Nixpkgs, então nodejs@20 é reproduzível em todos os lugares.
O Config (devbox.json)
{
"packages": ["nodejs@20", "python@3.12", "postgresql@16"],
"shell": {
"init_hook": ["echo 'Welcome to the project env'"],
"scripts": {
"dev": "npm run dev",
"test": "npm test",
"db": "pg_ctl start"
}
}
}
| Campo | Propósito |
|---|
packages | Versões de ferramenta/idioma fixadas |
shell.init_hook | Comandos executados ao entrar no shell |
shell.scripts | Comandos nomeados (devbox run dev) |
env | Variáveis de ambiente para o projeto |
Shell & Scripts
| Comando | Descrição |
|---|
devbox shell | Shell isolado interativo |
devbox run dev | Execute o script dev |
devbox run -- npm ci | Execute um comando arbitrário no env |
exit | Deixe o shell Devbox |
Serviços (Gerenciamento de Processo)
Devbox pode gerenciar serviços em segundo plano (bancos de dados, etc.) para um projeto.
| Comando | Descrição |
|---|
devbox services ls | Liste serviços configurados |
devbox services up | Inicie serviços |
devbox services stop | Pare serviços |
devbox add postgresql --start-services | Adicione um pacote apoiado por serviço |
CI & Contêineres
| Uso | Como |
|---|
| CI | Instale Devbox, execute devbox run test — env idêntico ao local |
| Docker | devbox generate dockerfile produz uma imagem reproduzível |
| Devcontainer | devbox generate devcontainer para VS Code |
| Direnv | devbox generate direnv para auto-entrar no env em cd |
Fluxos de Trabalho Comuns
# Stand up a reproducible project env from scratch
devbox init
devbox add nodejs@20 postgresql@16
devbox shell # now node + postgres are available, pinned
# Run tasks the same way locally and in CI
devbox run test
# Produce a Docker image from the same definition
devbox generate dockerfile
Devbox vs Alternativas
| Aspecto | Devbox | Dev Containers | Nix (raw) | mise |
|---|
| Backend | Nix | Docker | Nix | Próprio registro |
| Config | JSON | devcontainer.json | Linguagem Nix | .mise.toml |
| Isolation | Real (Nix store) | Container | Real | Versões de ferramentas |
| Learning curve | Gentil | Moderado | Íngreme | Gentil |
| Best for | Envs reproduzíveis, fácil | Dev baseado em contêiner | Poder Nix completo | Gerenciamento de versão |
Veja também Nix para o poder subjacente, devcontainer para dev baseado em contêiner, e mise para gerenciamento de versão de ferramentas.
Recursos