🛠️ Mise-en-place: Gestor Unificado de Herramientas, Entornos y Tareas
El Reemplazo Definitivo de nvm, pyenv, asdf y direnv
Mise-en-place (abreviado mise, desarrollado en Rust por Jeff Dickey) es una herramienta CLI de alto rendimiento diseñada para gestionar versiones de lenguajes de programación, herramientas de desarrollo, variables de entorno y scripts de tareas en un único archivo de configuración reproducible.
⚡ ¿Por qué Mise supera a herramientas tradicionales?
| Característica | Herramientas clásicas (nvm, pyenv, gvm) | asdf | Mise-en-place (Rust) |
|---|---|---|---|
| Lenguajes | 1 herramienta por lenguaje | Políglota | Políglota (Node, Python, Go, Rust, Java, etc.) |
| Rendimiento | Lento (scripts Bash pesados) | Lento en cada apertura de shell | Instantáneo (escrito en Rust nativo, ~10x más rápido) |
| Variables de entorno | Requiere direnv por separado | Requiere plugins | Nativo integrado ([env] en mise.toml) |
| Runner de Tareas | Requiere Makefile o npm scripts | No tiene | Nativo integrado ([tasks] con dependencias) |
| Mecanismo de PATH | Altera subshells | Shims lentos | Activación directa de PATH o Shims según preferencia |
🚀 Instalación y Activación
1. Instalación en Linux / macOS
curl https://mise.run | sh2. Activación en tu Shell (~/.zshrc)
Agrega esta línea al final de tu archivo de configuración de Zsh:
eval "$(~/.local/bin/mise activate zsh)"📋 Archivo de Configuración de Proyecto (mise.toml)
Coloca un archivo mise.toml en la raíz de cualquier repositorio para que cualquier colaborador clone y tenga el mismo entorno exacto:
[tools]
node = "22"
python = "3.12"
pnpm = "latest"
ripgrep = "14"
[env]
NODE_ENV = "development"
PORT = "3000"
DATABASE_URL = "postgres://dev:secret@localhost:5432/myapp"
[tasks.dev]
description = "Inicia el servidor de desarrollo"
run = "pnpm run dev"
[tasks.build]
description = "Compila para producción"
depends = ["test"]
run = "pnpm run build"
[tasks.test]
description = "Ejecuta suite de pruebas unitarias"
run = "pnpm test"🧰 Comandos Esenciales de la CLI
# Instalar y fijar una versión de herramienta localmente en el directorio actual
mise use node@22
mise use python@3.12
# Fijar una versión global para todo tu sistema
mise use -g node@lts
# Listar todas las herramientas instaladas y activas
mise ls
# Ejecutar una tarea definida en mise.toml
mise run dev
# Ejecutar un comando con una herramienta sin instalarla permanentemente
mise exec node@18 -- node app.js
# Diagnosticar posibles problemas de configuración en la terminal
mise doctor