Mise, abbreviazione di "mise-en-place", è uno strumento da riga di comando pensato per semplificare la gestione degli ambienti di sviluppo. Offre funzionalità per gestire versioni di runtime, variabili d'ambiente e task. Tutto in un'unica soluzione integrata.
Cosa fa Mise per gli sviluppatori
Simile a strumenti come asdf
, nvm
o pyenv
, Mise permette d'installare e gestire versioni specifiche di linguaggi di programmazione, framework ed environment come Node.js, Python e molti altri. Questo consente di avere versioni diverse per progetti differenti e garantisce coerenza e isolamento tra tutti gli ambienti di sviluppo in uso.
Mise facilita inoltre la gestione di variabili d'ambiente specifiche per ciascun progetto, in modo analogo a quanto avviene con una soluzione come direnv
. Questo assicura che ogni progetto disponga delle configurazioni necessarie. Senza interferire con altri ambienti, e con un vantaggio per l'efficienza, si ha anche una riduzione degli errori dovuti a configurazioni errate.
Alla gestione dei runtime e delle variabili d'ambiente si aggiunge il fatto che Mise può fungere anche da task runner, rappresenta quindi un'alternativa a make. Consente poi di definire e automatizzare task comuni come build, test e deployment. Il flusso di lavoro risulta quindi semplificato con un beneficio per la produttività.
Per gli utenti di Visual Studio Code è disponibile un'estensione dedicata che integra le funzionalità di Mise direttamente nell'editor. Essa permette di gestire tool, variabili d'ambiente e task senza dover lasciare l'ambiente di sviluppo.
Vantaggi per il coding
Una volta installato è necessario aggiungere Mise alla shell per l'attivazione automatica. La configurazione avviene attraverso file .mise.toml
dove è possibile specificare le versioni dei tool, le variabili d'ambiente e i task associati ad un progetto.
Esso assicura che ogni progetto possa utilizzare le versioni corrette dei tool e le configurazioni più adatte. Nello stesso tempo previene conflitti tra progetti diversi grazie alla gestione separata dei runtime e delle variabili d'ambiente (isolamento) e facilita l'automazione dei processi di build e deployment. Un unico strumento è infatti in grado di combinare funzionalità che altrimenti richiederebbero l'uso di più applicazioni.