Aller au contenu

Devbox - Environnements de développement reproductibles

Devbox - Environnements de développement reproductibles

Devbox (par Jetify) crée des environnements de développement isolés et reproductibles sans Docker ni machines virtuelles. Il est alimenté par Nix mais cache le langage Nix derrière une simple config JSON (devbox.json) et une CLI familière — vous exécutez devbox add nodejs@20 au lieu d’écrire une dérivation Nix. Le résultat : chacun de l’équipe (et CI) obtient exactement la même chaîne d’outils, épinglée à des versions précises, isolée du système hôte.

Installation

MéthodeCommande
Script d’installation`curl -fsSL https://get.jetify.com/devbox
ExigenceNix (Devbox peut l’installer pour vous)
Vérifierdevbox version

Démarrage

CommandeDescription
devbox initCréer un devbox.json dans le projet
devbox add nodejs@20 python@3.12Ajouter des packages (versions épinglées)
devbox rm pythonSupprimer un package
devbox installInstaller tout dans devbox.json
devbox shellEntrer dans l’environnement isolé
devbox run <script>Exécuter un script défini dans l’env

Gestion des packages

CommandeDescription
devbox add go@1.22Ajouter une version spécifique
devbox search postgresqlRechercher dans le catalogue de packages Nix
devbox listLister les packages installés
devbox updateMettre à jour les packages aux dernières autorisées
devbox info nodejsAfficher les détails d’un package

Les versions sont résolues par rapport au catalogue Nixpkgs, donc nodejs@20 est reproductible partout.

La 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"
    }
  }
}
ChampObjectif
packagesVersions d’outils/langages épinglées
shell.init_hookCommandes exécutées lors de l’entrée du shell
shell.scriptsCommandes nommées (devbox run dev)
envVariables d’environnement pour le projet

Shell et scripts

CommandeDescription
devbox shellShell interactif isolé
devbox run devExécuter le script dev
devbox run -- npm ciExécuter une commande arbitraire dans l’env
exitQuitter le shell Devbox

Services (gestion des processus)

Devbox peut gérer les services d’arrière-plan (bases de données, etc.) pour un projet.

CommandeDescription
devbox services lsLister les services configurés
devbox services upDémarrer les services
devbox services stopArrêter les services
devbox add postgresql --start-servicesAjouter un package avec service

CI & Conteneurs

UtilisationComment
CIInstaller Devbox, exécuter devbox run test — env identique au local
Dockerdevbox generate dockerfile produit une image reproductible
Devcontainerdevbox generate devcontainer pour VS Code
Direnvdevbox generate direnv pour auto-entrer l’env sur cd

Flux de travail courants

# 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 alternatives

AspectDevboxDev ContainersNix (brut)mise
BackendNixDockerNixRegistre propre
ConfigJSONdevcontainer.jsonLangage Nix.mise.toml
IsolationRéelle (magasin Nix)ConteneurRéelleVersions d’outils
Courbe d’apprentissageDouceModéréeRaideDouce
Meilleur pourEnvs reproductibles, facileDéveloppement basé conteneurPuissance Nix complèteGestion version

Voir aussi Nix pour la puissance sous-jacente, devcontainer pour le dev basé conteneur, et mise pour la gestion version outils.

Ressources