🛠️ 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ísticaHerramientas clásicas (nvm, pyenv, gvm)asdfMise-en-place (Rust)
Lenguajes1 herramienta por lenguajePolíglotaPolíglota (Node, Python, Go, Rust, Java, etc.)
RendimientoLento (scripts Bash pesados)Lento en cada apertura de shellInstantáneo (escrito en Rust nativo, ~10x más rápido)
Variables de entornoRequiere direnv por separadoRequiere pluginsNativo integrado ([env] en mise.toml)
Runner de TareasRequiere Makefile o npm scriptsNo tieneNativo integrado ([tasks] con dependencias)
Mecanismo de PATHAltera subshellsShims lentosActivación directa de PATH o Shims según preferencia

🚀 Instalación y Activación

1. Instalación en Linux / macOS

curl https://mise.run | sh

2. 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

🧭 Conexiones Internas