mise-en-place: Una herramienta para gestionar dev tools fácilmente

Un reemplazo todo en uno para pyenv, nvm, direnv y más

lunes, 13 de abril de 2026 11:03 UTC-04:00


Cuando trabajamos en desarrollo de software, usamos diferentes herramientas. Runtimes, compiladores, task runners, etc. Y todo el que trabaje en nuestro proyecto debe tener estas herramientas. Pero hay unos inconvenientes:

Pero he aquí la solución: mise

mise-en-place (o simplemente mise) es una herramienta todo en uno para gestionar entornos de desarrollo, ya sea Python, web, entre muchos otros. También gestiona variables de entorno tal como direnv (¡y funciona en Windows sin WSL!) e incluso gestiona comandos comunes (para desarrollo, compilación o testing), tal como make o los scripts de npm.

Empezando con mise

Para empezar, deberás instalar mise. Hay varios métodos:

Ahora, opcional pero recomendablemente, puedes activar el entorno para poder usar los programas instalados por mise donde quieras.

El proceso depende de tu shell:

Ahora, vamos a la siguiente parte.

Usando mise

Usar mise es muy sencillo. Veamos un ejemplo: Para un curso de desarrollo full stack, tengo que hacer varios proyectos con Node.js. Afortunadamente, es fácil de instalar con mise, yendo al directorio del proyecto y corriendo esto:

mise use node@24

La sintaxis básica de mise use es mise use <herramienta>@<versión>. En este caso node y la última versión LTS (de versión mayor par) de Node.js, la número 24 al momento de escribir esto.

Si solo quieres correr un comando con esa herramienta, sin activarla, puedes usar mise exec (o mise x):

mise exec node@24 -- node -v

También puedes instalar gestores alternativos (como pnpm), o incluso, runtimes alternativos como Deno o Bun.

Y no está limitado a herramientas de desarrollo web, también puedes instalar muchas otras cosas:

# Python
mise use python
# Ruby
mise use ruby
# Go
mise use go

Y cientos de herramientas más.

El archivo mise.toml

La configuración de Mise se hace en un archivo llamado mise.toml. Cuando usas mise use, este archivo se crea automáticamente, y contiene más o menos esto:

[tools]
node = '24'

Esto, asumiendo que corriste el comando mise use node@24 que vimos anteriormente.

¿Recuerdas que anteriormente dije que puedes usar mise para gestionar comandos comunes? Esto también se hace con el archivo mise.toml. Por ejemplo, en un típico proyecto de Vite:

[tasks.dev]
description = "Corre el servidor de desarrollo"
run = ["npm run dev"]

Ahora, puedes empezar el servidor de desarrollo con mise run dev

Aquí hay un ejemplo simple pero más o menos completo, extraído de mi proyecto de React para el curso:

[tools]
biome = "latest" # Linter para web
pnpm = "latest" # Gestor de paquetes alternativo

[tasks.dev]
description = "Arranca el servidor dev"
run = "pnpm dev"

[tasks.lint]
description = "Lintea los archivos"
run = "biome lint ."