Da qualche mese ormai, sto usando Mise En Place come tool per gestire i miei ambienti: dal macro (intera macchina virtuale) al micro (singolo progetto).
Frustrato dal dover sempre re-iniziare daccapo quando creavo una nuova macchina virtuale con WSL2 mi è stato suggerito questo strumento che ho apprezzato sempre di più per la facilità di utilizzo, la velocità e la consistenza.
E’ il classico tool “coltellino svizzero” che ti permette di gestire i tool e le loro versioni in un determinato progetto o nell’intera macchina, caricare le variabili d’ambiente di un progetto quando entri nella cartella del progetto, e i task/script con cui si vuole automatizzare il progetto stesso.
Dopo la veloce installazione con lo script indicato qui si possono esplorare i comandi con
mise help
Si nota subito la nutrita lista di comandi disponibili. Mi limito qui a commentare quelli che uso più spesso e che riguardano la gestione dei tool.
mise list | ls
Questo comando permette di vedere l’elenco di tutti i pacchetti installati, evidenziando quelli che sono attivi e quelli al momento non disponibili: questo perché alcuni si potranno attivare qualora si entra nella cartella dove è stato configurato l’utilizzo di quel tool in quella specifica versione. L’intera lista indica quindi tutte le dipendenze installate nella cache locale.
mise use | install
use è il comando più spesso invocato per installare un tool; vediamo alcuni esempi di utilizzo:
mise use -g go
Con questo comando installiamo Go all’ultima versione e lo rendiamo disponibile globalmente. La configurazione globale è disponibile al path ./config/mise/config.toml
~/my-projects/project-a/mise use node@19
Con questo comando configuriamo l’utilizzo della versione 19 di Nodejs (verrà scaricata la minor e patch più recenti della major indicata). Questa versione di Nodejs si attiverà ogni volta che entriamo nella cartella di progetto. Noteremo che in questo caso mise avrà creato per noi il file di configurazione mise.toml. Se mise non troverà disponibile nella cache Nodejs 19 entrando nella cartella di progetto solleverà un warning. A quel punto basterà lanciare il comando mise install per scaricare le dipendenze richieste.
La differenza tra use e install è che use installa e configura mentre install scarica la dipendenza nella cache e la rende quindi successivamente disponibile qualora la si configuri via mise.toml.
Da notare che facendoci indicare la lista di Nodejs disponibili con mise ls node ci indica chiaramente la versione attiva e la sorgente che l’ha configurata e che versione era stata richiesta

Mise permette di provare a scaricare facilmente un tool indicandone solo il nome: risolverà poi questo nome con uno o più backend che lo implementano.

Come si nota questo tool può essere risolto con vari backend che lo rendono disponibile. Tra questi backend troviamo anche noti package manager come cargo e npm oppure linguaggi che danno la possibilità di installare come go. Alcuni come ubi per esempio utilizzano le release disponibili in Github
I corrispettivi di use e install per rimuovere le dipendenze sono unuse e uninstall
mise which
Questo comando permette di vedere dove è ubicato il binario dell’applicazione che stiamo usando.
Questo ci permette di avere un’idea di come usa la cache mise attraverso gli shims, un sistema simile al middleware per manipolare in questo caso il PATH della nostra shell.
mise outdated
Questo comando crea un report che mostra lo stato di ogni tool installato la quale verisione non è aggiornata rispetto alla versione richiesta inizialmente, che di default è latest.
mise upgrade
Questo comando si occupa di aggiornare tutte le versioni in accordo con la versione richiesta durante la configurazione con use
mise prune
Questo comando permette di ripulire tutte quelle dipendenze che non sono più usate, quindi elencate in qualche file di configurazione. Viene comunque richiesta la conferma per ognuna prima di rimuoverla.
mise search <tool-name>
Questo comando permette di cercare nel registro di mise se è disponibile il tool indicato per poi poterlo installare ed usare.
mise helix npm e lsp
Usando come editor Helix scarico parecchi LSP per la gestione delle codebase nei vari linguaggi. MA con gli LSP distribuiti via npm soprattutto nell’ambito frontend/html la mia esperienza con mise non è stata ottimale in quanto Helix non riesce a trovarli disponibili a meno di andare a definire il path creato da mise nel file di configurazione languages.toml. Per ora sto usando quindi sono tornato ad usare pnpm come gestore globale dei pacchetti.
Conoscevi già mise? Che esperienza hai avuto nell’usarlo?




Top comments (0)