Ir al contenido

Devbox - Entornos de desarrollo reproducibles

Devbox - Entornos de desarrollo reproducibles

Devbox (de Jetify) crea entornos de desarrollo aislados y reproducibles sin Docker ni máquinas virtuales. Es impulsado por Nix pero oculta el lenguaje Nix detrás de una configuración JSON simple (devbox.json) y una CLI familiar — ejecutas devbox add nodejs@20 en lugar de escribir una derivación Nix. El resultado: todos en el equipo (y CI) obtienen exactamente la misma cadena de herramientas, fijada a versiones precisas, aislada del sistema anfitrión.

Instalación

MétodoComando
Script de instalación`curl -fsSL https://get.jetify.com/devbox
RequerimientoNix (Devbox puede instalarlo por ti)
Verificardevbox version

Primeros pasos

ComandoDescripción
devbox initCrea un devbox.json en el proyecto
devbox add nodejs@20 python@3.12Agrega paquetes (versiones fijadas)
devbox rm pythonElimina un paquete
devbox installInstala todo en devbox.json
devbox shellIngresa en el entorno aislado
devbox run <script>Ejecuta un script definido dentro del env

Gestionar paquetes

ComandoDescripción
devbox add go@1.22Agrega una versión específica
devbox search postgresqlBusca en el catálogo de paquetes Nix
devbox listLista paquetes instalados
devbox updateActualiza paquetes a lo más reciente permitido
devbox info nodejsMuestra detalles de un paquete

Las versiones se resuelven contra el catálogo de Nixpkgs, por lo que nodejs@20 es reproducible en todas partes.

La configuración (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
packagesVersiones de herramientas/lenguaje fijadas
shell.init_hookComandos ejecutados al ingresar el shell
shell.scriptsComandos nombrados (devbox run dev)
envVariables de entorno para el proyecto

Shell y scripts

ComandoDescripción
devbox shellShell aislado interactivo
devbox run devEjecuta el script dev
devbox run -- npm ciEjecuta un comando arbitrario en el env
exitSal del shell de Devbox

Servicios (gestión de procesos)

Devbox puede gestionar servicios en segundo plano (bases de datos, etc.) para un proyecto.

ComandoDescripción
devbox services lsLista servicios configurados
devbox services upInicia servicios
devbox services stopDetiene servicios
devbox add postgresql --start-servicesAgrega un paquete respaldado por servicios

CI y contenedores

UsarCómo
CIInstala Devbox, ejecuta devbox run test — env idéntico al local
Dockerdevbox generate dockerfile produce una imagen reproducible
Devcontainerdevbox generate devcontainer para VS Code
Direnvdevbox generate direnv para ingresar auto en el env al cd

Flujos de trabajo comunes

# Levanta un env de proyecto reproducible desde cero
devbox init
devbox add nodejs@20 postgresql@16
devbox shell           # ahora node + postgres están disponibles, fijados

# Ejecuta tareas de la misma manera localmente y en CI
devbox run test

# Produce una imagen Docker de la misma definición
devbox generate dockerfile

Devbox vs alternativas

AspectoDevboxDev ContainersNix (crudo)mise
BackendNixDockerNixPropio registro
ConfiguraciónJSONdevcontainer.jsonLenguaje Nix.mise.toml
AislamientoReal (tienda Nix)ContenedorRealVersiones de herramienta
Curva de aprendizajeSuaveModeradaEmpinadaSuave
Mejor paraEnvs reproducibles, fácilDev basado en contenedorPoder Nix completoGestión de versión

Ver también Nix para el poder subyacente, devcontainer para dev basado en contenedor, y mise para gestión de versión de herramienta.

Recursos