Ir al contenido

watchexec - Ejecutar Comandos en Cambios de Archivo

watchexec - Ejecutar Comandos en Cambios de Archivo

watchexec observa un conjunto de archivos o directorios y ejecuta un comando cuando cambian. Es agnóstico de lenguaje y proyecto — no se requiere archivo de configuración — y maneja las partes fidedignas de la observación de archivos para ti: debouncing de cambios rápidos, respetando .gitignore, reiniciando procesos de larga ejecución limpiamente y pasando las rutas cambiadas a tu comando. Úsalo para ejecutar automáticamente pruebas, reiniciar un servidor de desarrollo o reconstruir al guardar.

Installation

PlataformaComando
Cargo (todas las plataformas)cargo install watchexec-cli
macOS (Homebrew)brew install watchexec
Arch Linuxsudo pacman -S watchexec
Debian/Ubuntudescarga el .deb desde Releases
Windows (Scoop)scoop install watchexec
Verificarwatchexec --version

Basic Usage

ComandoDescripción
watchexec "cargo test"Ejecuta pruebas en cualquier cambio
watchexec -e py "pytest"Solo observa archivos .py
watchexec -e js,ts,jsx "npm run build"Observa múltiples extensiones
watchexec -- ls -laTodo después de -- es el comando
watchexec --helpLista completa de opciones

Filtering What to Watch

OpciónDescripción
-e, --exts py,rsSolo desencadena en estas extensiones de archivo
-w, --watch DIRObserva una ruta específica (repetible)
-i, --ignore GLOBIgnora rutas que coincidan con un glob
--ignore-file FILECarga patrones de ignorancia desde un archivo
--no-vcs-ignoreNo uses reglas de .gitignore
-f, --filter GLOBSolo observa archivos que coincidan con un glob

Process Management

OpciónDescripción
-r, --restartReinicia el comando en cambio (mata + reejecutar)
-s, --signal SIGSeñal a enviar al reiniciar (p. ej. SIGTERM)
--stop-timeout 5sPeríodo de gracia antes de force-kill
-o, --on-busy-update MODEqueue, do-nothing, restart, o signal
-nSin grupo de procesos (envía señal solo al hijo directo)

Usa -r para procesos de larga ejecución (servidores), y el predeterminado para comandos de una sola ejecución (pruebas, compilaciones).

Debouncing & Timing

OpciónDescripción
--debounce 200msEspera a que los cambios se estabilicen antes de ejecutar
--delay-run 1sRetraso antes de que el comando se ejecute
-p, --postponeNo ejecutes hasta el primer cambio (omite ejecución inicial)

Useful Behavior

OpciónDescripción
-c, --clearLimpia la pantalla antes de cada ejecución
--emit-events-to environmentPasa rutas cambiadas vía variables de entorno
-N, --notifyNotificación de escritorio en completación
--project-origin DIREstablece la raíz del proyecto para reglas de ignorancia
-vVerboso (debug qué desencadena)

Environment Variables (Changed Paths)

Cuando los eventos se emiten al entorno, tu comando puede ver qué cambió:

VariableContiene
WATCHEXEC_COMMON_PATHPrefijo común de rutas cambiadas
WATCHEXEC_WRITTEN_PATHArchivos escritos
WATCHEXEC_CREATED_PATHArchivos creados
WATCHEXEC_REMOVED_PATHArchivos eliminados

Common Workflows

# Ejecuta automáticamente el conjunto de pruebas en cualquier cambio de código fuente
watchexec -e rs "cargo test"

# Reinicia un servidor de desarrollo de forma limpia en cambio
watchexec -r -e go "go run ./cmd/server"

# Reconstruye y limpia la pantalla, ignorando la carpeta dist
watchexec -c -i "dist/**" -e ts "npm run build"

# Solo después de que los cambios se estabilicen (evita agotar en guardados masivos)
watchexec --debounce 500ms -e py "pytest -x"
HerramientaModelo
watchexecObservador de archivo independiente, sin configuración
entrMinimalista, lee lista de archivos desde stdin
nodemonEnfocado en Node, reinicia apps de node
mise/just + watchexecCorredores de tareas que salen a watchexec

Los corredores de tareas como just y mise a menudo se emparejan con watchexec para añadir observación de archivos a sus recetas.

Resources