Modd는 파일 변경을 감지해 테스트·빌드 같은 명령을 실행하고, 웹 서버나 데이터베이스 같은 데몬을 시작하거나 재시작하는 개발 도구다. macOS, Windows, Linux, FreeBSD, NetBSD, OpenBSD용 단일 실행 파일로 제공되며 외부 의존성이 없다.
저장소에는 React·Browserify·Babel 프런트엔드, Go 테스트, Python·Redis와 라이브 리로드 설정 예제가 있다. 개발 중 브라우저 자동 새로고침이 필요하다면 Modd와 연동되는 devd도 함께 사용할 수 있다.
운영체제에 맞는 파일은 릴리스 페이지에서 내려받아 PATH에 등록하면 된다. Go 1.17 이상이 설치돼 있다면 다음 명령으로 설치할 수도 있다. 이 방법은 CGO가 필요하므로 CGO가 비활성화된 환경에서는 CGO_ENABLED=1을 앞에 지정해야 한다.
$ go install github.com/cortesi/modd/cmd/modd@latest
현재 디렉터리에 modd.conf를 만들고 파일 패턴과 실행할 명령을 지정한다. 예를 들어 다음 설정은 시작할 때 Go 모듈 전체를 테스트하고, 이후에는 변경된 파일이 속한 모듈만 테스트한다.
**/*.go { prep: go test @dirmods }
설정 파일은 파일 패턴별 블록으로 구성된다. prep 명령은 순서대로 실행되며 하나라도 실패하면 해당 블록의 나머지 작업을 중단한다. 모든 준비 명령이 성공하면 블록의 데몬을 재시작한다. 파일 변경은 잠시 모아 처리하므로 여러 파일을 함께 바꾸는 작업이 명령을 반복해서 실행시키는 일을 줄인다.
데몬은 기본적으로 변경이 감지되면 SIGHUP 신호를 받고, 종료되면 Modd가 다시 시작한다. 데몬이 신호를 받아 종료하지 않고 설정을 다시 읽도록 할 수도 있다. Windows에서는 신호 지원이 제한돼 신호 종류와 관계없이 데몬을 중지한 뒤 다시 시작한다. Modd는 기본 제공 셸을 사용하며 bash, sh, powershell도 지정할 수 있지만, 기본 셸을 쓰면 설정 파일의 플랫폼 간 이식성을 유지하기 쉽다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요