Saltar al contenido principal
MDev Env Pro
Guía: Guía Mise - Adiós nvm/pyenv77% Completado

En este módulo aprenderás:

  • Automatiza acciones al hacer cd (enter/leave), post_install, carga automática de .env y servicios.
  • Comandos y configuraciones clave para 10. Hooks: Tu Terminal con Piloto Automático
  • Ejercicios prácticos listos para probar en tu terminal local

Habla causita: Automatiza tu flujo sin mover un solo dedo

Mano, ¿cuántas veces al día haces cd mi-proyecto, te olvidas de correr pnpm install, o se te pasa prender la base de datos de Docker y terminas renegando gratis 20 minutos con errores de conexión?

Con los Hooks y eventos de ciclo de vida de mise, tu terminal trabaja en piloto automático. En cuanto entras al directorio de tu chamba, mise puede ejecutar scripts de validación, alertarte sobre dependencias desactualizadas o levantar servicios auxiliares de frente.

Eventos: enter, leave, post_install0 shims • Cero lentazos en el promptAutomatización nativa en Rust

1. ¿Qué son los Hooks en mise?

A diferencia de los scripts manuales que pegas en tu .zshrc y que convierten tu shell en una feria patronal con 3 segundos de lag al abrir cada pestaña, los hooks en mise se definen directamente en tu archivo de configuración y solo se disparan cuando las condiciones cambian.

Los hooks más potentes son:

  • hooks.enter / hooks.cd: Se disparan al entrar a la carpeta del proyecto.
  • hooks.leave: Se ejecutan cuando sales del directorio.
  • hooks.post_install: Se activan automáticamente justo después de que mise install descargue una herramienta.

2. Configurando enter y leave en tu mise.toml

Imagina que cada vez que entras a tu proyecto quieres verificar si hay migraciones pendientes, recordar un mensaje de equipo o verificar que Docker esté corriendo:

mise.tomltoml
[tools]
node = "24"
pnpm = "10"

[env]
PROJECT_NAME = "ecommerce-latam"

[hooks]
# Se ejecuta apenas haces "cd" dentro de esta carpeta
enter = """
echo "🚀 ¡Bienvenido a $PROJECT_NAME! Entorno cargado al 100%."
if [ ! -d "node_modules" ]; then
echo "⚠️ Ojo causa: no tienes node_modules. Corriendo pnpm install..."
pnpm install
fi
"""

# Se ejecuta cuando sales hacia otra carpeta
leave = """
echo "👋 Saliendo de $PROJECT_NAME. Limpiando variables temporales..."
"""

3. El hook post_install: Configuración automática de herramientas

¿Instalaste Python y siempre te olvidas de instalar uv o pip? ¿O instalaste Node y quieres asegurarte de que corepack esté habilitado? Usa post_install:

mise.tomltoml
[tools]
node = "24.15.0"
python = "3.13"

[hooks]
post_install = """
case "$MISE_TOOL" in
node)
  echo "⚡ Habilitando corepack para pnpm y yarn..."
  corepack enable
  ;;
python)
  echo "🐍 Creando virtualenv automático si no existe..."
  python -m venv .venv
  ;;
esac
"""

4. Carga Automática de .env y Orquestación de Servicios

Mise monitorea archivos .env y .env.local de forma nativa. Si necesitas que al entrar al proyecto se active un contenedor de PostgreSQL o Redis en segundo plano, puedes combinar hooks con mise tasks:

mise.tomltoml
[tools]
node = "24"

[tasks.db-up]
description = "Levantar Postgres local en Docker"
run = "docker compose up -d postgres redis"

[tasks.db-down]
description = "Pausar contenedores para ahorrar RAM en la laptop"
run = "docker compose stop"

[hooks]
# Prende servicios al llegar a la chamba y apágalos al irte
enter = "mise run db-up"
leave = "mise run db-down"

Reto Ninja de la Lección 🥷

Demuestra que dominas los Hooks de automatización en mise respondiendo este test rápido:

Reto Ninja: Hooks & Automatización 🪝
Pregunta 1/3
❯reto --step=1

¿Qué hook se ejecuta automáticamente en mise cuando ingresas a la carpeta de tu proyecto con 'cd'?

Ejercicio Práctico Ninja 🥷

  1. En la raíz de un proyecto de prueba, abre tu mise.toml y agrega un hook enter sencillo:
    [hooks]
    enter = "echo '🇵🇪 Habla mano, mise activó el entorno sin lag'"
  2. Sal del directorio (cd ..) y vuelve a entrar (cd demo-mise).
  3. Observa cómo mise ejecuta el hook automáticamente de frente.
  4. Agrega un hook leave para despedirte cuando cambies de repositorio. ¡Tu terminal nunca más estará abandonada!

¿Terminaste esta lección?

Marca tu progreso para sincronizar el avance en tu navegador.