Pular para o conteúdo

watchexec - Cheatsheet de Executar Comandos em Mudanças de Arquivo

watchexec - Cheatsheet de Executar Comandos em Mudanças de Arquivo

watchexec assiste um conjunto de arquivos ou diretórios e executa um comando sempre que eles mudam. É agnóstico a linguagem e projeto — nenhum arquivo config necessário — e manipula as partes fidgety do file-watching para você: debouncing de mudanças rápidas, respeitando .gitignore, reiniciando processos longos cleanly e passando caminhos mudados para seu comando. Use-o para auto-run testes, reiniciar um dev server ou reconstruir na gravação.

Instalação

PlatformCommand
Cargo (todas plataformas)cargo install watchexec-cli
macOS (Homebrew)brew install watchexec
Arch Linuxsudo pacman -S watchexec
Debian/Ubuntufaça download do .deb de Releases
Windows (Scoop)scoop install watchexec
Verificarwatchexec --version

Uso Básico

CommandDescrição
watchexec "cargo test"Execute testes em qualquer mudança
watchexec -e py "pytest"Apenas assista arquivos .py
watchexec -e js,ts,jsx "npm run build"Assista múltiplas extensões
watchexec -- ls -laTudo após -- é o comando
watchexec --helpLista de opção completa

Filtrando O Que Assistir

OptionDescrição
-e, --exts py,rsApenas dispare nessas extensões de arquivo
-w, --watch DIRAssista um caminho específico (repeatable)
-i, --ignore GLOBIgnore caminhos matching um glob
--ignore-file FILECarregue padrões de ignore de um arquivo
--no-vcs-ignoreNão use regras .gitignore
-f, --filter GLOBApenas assista arquivos matching um glob

Gerenciamento de Processo

OptionDescrição
-r, --restartReinicie o comando em mudança (kill + rerun)
-s, --signal SIGSinal para enviar ao reiniciar (ex. SIGTERM)
--stop-timeout 5sPeríodo de graça antes de force-kill
-o, --on-busy-update MODEqueue, do-nothing, restart ou signal
-nSem process group (envie sinal apenas para criança direta)

Use -r para processos longos (servers) e o padrão para comandos one-shot (testes, builds).

Debouncing & Timing

OptionDescrição
--debounce 200msAguarde as mudanças se assentarem antes de rodar
--delay-run 1sAtraso antes do comando rodar
-p, --postponeNão rode até a primeira mudança (pule run inicial)

Comportamento Útil

OptionDescrição
-c, --clearLimpe a tela antes de cada execução
--emit-events-to environmentPasse caminhos mudados via env vars
-N, --notifyNotificação de desktop em conclusão
--project-origin DIRDefina a raiz do projeto para regras ignore
-vVerboso (debug o que dispara)

Variáveis de Ambiente (Caminhos Mudados)

Quando eventos são emitidos ao ambiente, seu comando pode ver o que mudou:

VariableContém
WATCHEXEC_COMMON_PATHPrefixo comum de caminhos mudados
WATCHEXEC_WRITTEN_PATHArquivos escritos
WATCHEXEC_CREATED_PATHArquivos criados
WATCHEXEC_REMOVED_PATHArquivos removidos

Fluxos de Trabalho Comuns

# Auto-execute a suíte de testes em qualquer mudança de source
watchexec -e rs "cargo test"

# Reinicie um dev server cleanly em mudança
watchexec -r -e go "go run ./cmd/server"

# Reconstrua e limpe a tela, ignorando a pasta dist
watchexec -c -i "dist/**" -e ts "npm run build"

# Apenas após mudanças se assentarem (evite trashing em bulk saves)
watchexec --debounce 500ms -e py "pytest -x"

watchexec vs Ferramentas Relacionadas

ToolModelo
watchexecStandalone, config-free file watcher
entrMinimalista, lê lista de arquivo do stdin
nodemonNode-focused, reinicia node apps
mise/just + watchexecTask runners que shell out para watchexec

Task runners como just e mise frequentemente emparelham com watchexec para adicionar file-watching a suas recipes.

Recursos