Pular para o conteúdo

Devbox - Cheatsheet de Ambientes de Desenvolvimento Reproduzíveis

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

MétodoComando
Install script`curl -fsSL https://get.jetify.com/devbox
RequirementNix (Devbox pode instalá-lo para você)
Verifydevbox version

Começando

ComandoDescrição
devbox initCrie um devbox.json no projeto
devbox add nodejs@20 python@3.12Adicione pacotes (versões fixadas)
devbox rm pythonRemova um pacote
devbox installInstale tudo em devbox.json
devbox shellInsira o ambiente isolado
devbox run <script>Execute um script definido dentro do env

Gerenciando Pacotes

ComandoDescrição
devbox add go@1.22Adicione uma versão específica
devbox search postgresqlPesquise o catálogo de pacotes Nix
devbox listListe pacotes instalados
devbox updateAtualize pacotes para o mais recente permitido
devbox info nodejsMostre 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"
    }
  }
}
CampoPropósito
packagesVersões de ferramenta/idioma fixadas
shell.init_hookComandos executados ao entrar no shell
shell.scriptsComandos nomeados (devbox run dev)
envVariáveis de ambiente para o projeto

Shell & Scripts

ComandoDescrição
devbox shellShell isolado interativo
devbox run devExecute o script dev
devbox run -- npm ciExecute um comando arbitrário no env
exitDeixe o shell Devbox

Serviços (Gerenciamento de Processo)

Devbox pode gerenciar serviços em segundo plano (bancos de dados, etc.) para um projeto.

ComandoDescrição
devbox services lsListe serviços configurados
devbox services upInicie serviços
devbox services stopPare serviços
devbox add postgresql --start-servicesAdicione um pacote apoiado por serviço

CI & Contêineres

UsoComo
CIInstale Devbox, execute devbox run test — env idêntico ao local
Dockerdevbox generate dockerfile produz uma imagem reproduzível
Devcontainerdevbox generate devcontainer para VS Code
Direnvdevbox 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

AspectoDevboxDev ContainersNix (raw)mise
BackendNixDockerNixPróprio registro
ConfigJSONdevcontainer.jsonLinguagem Nix.mise.toml
IsolationReal (Nix store)ContainerRealVersões de ferramentas
Learning curveGentilModeradoÍngremeGentil
Best forEnvs reproduzíveis, fácilDev baseado em contêinerPoder Nix completoGerenciamento 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