Salta ai contenuti

Devbox - Cheatsheet Ambienti di Sviluppo Riproducibili

Devbox - Cheatsheet Ambienti di Sviluppo Riproducibili

Devbox (di Jetify) crea ambienti di sviluppo isolati e riproducibili senza Docker o macchine virtuali. È alimentato da Nix ma nasconde il linguaggio Nix dietro una semplice configurazione JSON (devbox.json) e una CLI familiare — esegui devbox add nodejs@20 invece di scrivere una derivazione Nix. Il risultato: tutti nel team (e CI) ottengono la stessa toolchain esatta, fissata a versioni precise, isolata dal sistema host.

Installazione

MetodoComando
Script di installazione`curl -fsSL https://get.jetify.com/devbox
RequisitoNix (Devbox può installarlo per te)
Verificadevbox version

Iniziare

ComandoDescrizione
devbox initCrea un devbox.json nel progetto
devbox add nodejs@20 python@3.12Aggiungi pacchetti (versioni fissate)
devbox rm pythonRimuovi un pacchetto
devbox installInstalla tutto in devbox.json
devbox shellEntra nell”ambiente isolato
devbox run <script>Esegui uno script definito dentro l”env

Gestione Pacchetti

ComandoDescrizione
devbox add go@1.22Aggiungi una versione specifica
devbox search postgresqlCerca nel catalogo di pacchetti Nix
devbox listElenca i pacchetti installati
devbox updateAggiorna i pacchetti ai più recenti consentiti
devbox info nodejsMostra i dettagli per un pacchetto

Le versioni risolvono in base al catalogo Nixpkgs, quindi nodejs@20 è riproducibile ovunque.

La Configurazione (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"
    }
  }
}
CampoScopo
packagesVersioni strumento/linguaggio fissate
shell.init_hookComandi eseguiti quando si entra nella shell
shell.scriptsComandi denominati (devbox run dev)
envVariabili di ambiente per il progetto

Shell e Script

ComandoDescrizione
devbox shellShell isolata interattiva
devbox run devEsegui lo script dev
devbox run -- npm ciEsegui un comando arbitrario nell”env
exitEsci dalla shell Devbox

Servizi (Gestione dei Processi)

Devbox può gestire i servizi in background (database, ecc.) per un progetto.

ComandoDescrizione
devbox services lsElenca i servizi configurati
devbox services upAvvia i servizi
devbox services stopArresta i servizi
devbox add postgresql --start-servicesAggiungi un pacchetto supportato dal servizio

CI & Contenitori

UsaCome
CIInstalla Devbox, esegui devbox run test — env identico a locale
Dockerdevbox generate dockerfile produce un”immagine riproducibile
Devcontainerdevbox generate devcontainer per VS Code
Direnvdevbox generate direnv per entrare auto nell”env su cd

Flussi di Lavoro Comuni

# Prepara un ambiente di progetto riproducibile da zero
devbox init
devbox add nodejs@20 postgresql@16
devbox shell           # ora node + postgres sono disponibili, fissi

# Esegui attività nello stesso modo localmente e in CI
devbox run test

# Produci un''immagine Docker dalla stessa definizione
devbox generate dockerfile

Devbox vs Alternative

AspettoDevboxDev ContainersNix (raw)mise
BackendNixDockerNixRegistro proprio
ConfigurazioneJSONdevcontainer.jsonLinguaggio Nix.mise.toml
IsolamentoReale (negozio Nix)ContenitoreRealeVersioni dello strumento
Curva di apprendimentoDelicataModerataRipidaDelicata
Migliore perEnv riproducibili, facileSviluppo basato su contenitorePotenza Nix completaGestione versione

Vedi anche Nix per il potere sottostante, devcontainer per lo sviluppo basato su contenitore e mise per la gestione della versione dello strumento.

Risorse