콘텐츠로 이동

watchexec - 파일 변경 시 명령 실행 치트시트

watchexec - 파일 변경 시 명령 실행 치트시트

watchexec은 파일이나 디렉토리 세트를 감시하고 변경될 때마다 명령을 실행한다. 언어 및 프로젝트 불가지론적이다 — 설정 파일 필요 없음 — 파일 감시의 까다로운 부분을 처리한다: 빠른 변경의 디바운싱, .gitignore 존경, 장기 실행 프로세스 깨끗한 재시작, 변경된 경로를 명령에 전달. 테스트 자동 실행, dev 서버 재시작, 또는 저장 시 재구축에 사용하자.

설치

플랫폼명령어
Cargo (모든 플랫폼)cargo install watchexec-cli
macOS (Homebrew)brew install watchexec
Arch Linuxsudo pacman -S watchexec
Debian/Ubuntu릴리스에서 .deb 다운로드
Windows (Scoop)scoop install watchexec
확인watchexec --version

기본 사용

명령어설명
watchexec "cargo test"모든 변경에 대해 테스트 실행
watchexec -e py "pytest".py 파일만 감시
watchexec -e js,ts,jsx "npm run build"여러 확장 감시
watchexec -- ls -la-- 뒤의 모든 것이 명령
watchexec --help전체 옵션 목록

감시할 것 필터링

옵션설명
-e, --exts py,rs이 파일 확장에서만 트리거
-w, --watch DIR특정 경로 감시 (반복 가능)
-i, --ignore GLOBglob과 일치하는 경로 무시
--ignore-file FILE파일에서 무시 패턴 로드
--no-vcs-ignore.gitignore 규칙을 사용하지 않음
-f, --filter GLOBglob과 일치하는 파일만 감시

프로세스 관리

옵션설명
-r, --restart변경 시 명령 재시작 (kill + 다시 실행)
-s, --signal SIG재시작 시 보낼 신호 (예: SIGTERM)
--stop-timeout 5s강제 종료 전 유예 기간
-o, --on-busy-update MODEqueue, do-nothing, restart, 또는 signal
-n프로세스 그룹 없음 (직접 자식에만 신호 전송)

장기 실행 프로세스 (서버)에는 -r을, 일회성 명령 (테스트, 빌드)에는 기본값을 사용하자.

디바운싱 & 타이밍

옵션설명
--debounce 200ms실행 전에 변경이 정착하도록 대기
--delay-run 1s명령 실행 전에 지연
-p, --postpone첫 번째 변경까지 실행하지 않음 (초기 실행 건너뜀)

유용한 행동

옵션설명
-c, --clear각 실행 전에 화면 지우기
--emit-events-to environment변경된 경로를 환경 변수로 전달
-N, --notify완료 시 데스크톱 알림
--project-origin DIR무시 규칙에 대해 프로젝트 루트 설정
-v자세함 (무엇이 트리거하는지 디버그)

환경 변수 (변경된 경로)

이벤트가 환경에 내보내질 때, 명령이 변경된 내용을 볼 수 있다:

변수포함
WATCHEXEC_COMMON_PATH변경된 경로의 공통 접두어
WATCHEXEC_WRITTEN_PATH작성된 파일
WATCHEXEC_CREATED_PATH생성된 파일
WATCHEXEC_REMOVED_PATH제거된 파일

일반적인 워크플로우

# 모든 소스 변경에 대해 테스트 스위트 자동 실행
watchexec -e rs "cargo test"

# 변경 시 dev 서버를 깨끗하게 재시작
watchexec -r -e go "go run ./cmd/server"

# 재구축 및 화면 지우기, dist 폴더 무시
watchexec -c -i "dist/**" -e ts "npm run build"

# 변경이 안정되도록 대기 (벌크 저장 시 스래싱 방지)
watchexec --debounce 500ms -e py "pytest -x"

watchexec vs 관련 도구

도구모델
watchexec독립 실행형, 설정 없음 파일 감시
entr최소, stdin에서 파일 목록 읽기
nodemonNode 포커스, node 앱 재시작
mise/just + watchexec작업 실행기가 watchexec으로 셸 아웃

justmise와 같은 작업 실행기는 종종 watchexec과 페어링하여 레시피에 파일 감시를 추가한다.

자료