Justfile 이란?
just란?
just는 프로젝트별 커맨드를 모아두는 **커맨드 러너(task runner)**다. 자주 쓰는 명령어들을 justfile이라는 파일에 레시피(recipe)로 정의해두면, just <레시피명>으로 간단하게 실행할 수 있다.
just serve # 개발 서버 실행
just test # 테스트 실행
just build # 빌드
make와 뭐가 다른가?
make와 개념은 비슷하지만 몇 가지 차이가 있다.
make는 원래 C 빌드 도구라 파일 의존성, 타임스탬프 기반 캐싱 등 빌드에 특화된 동작이 기본 내장되어 있다.- 들여쓰기를 반드시 탭(tab)으로 해야 하는 등 quirk가 있어 초심자가 실수하기 쉽다.
just는 커맨드 실행에만 집중한다. 빌드 캐싱 같은 건 없고, 레시피를 정의하고 실행하는 것이 전부다.- 스페이스 들여쓰기도 OK, 에러 메시지도 친절하고, 기본 셸 동작이 예측 가능하다.
Justfile 예시
이 블로그 프로젝트에서 사용 중인 justfile이다.
python := "python"
port := "3000"
# 의존성 설치
install:
{{python}} -m pip install setuptools
{{python}} -m pip install -e ".[dev]"
# 로컬 개발 서버
serve:
PORT={{port}} {{python}} -m pyramid_app
# 정적 HTML 빌드
build:
{{python}} -m pyramid_app.builder
# 테스트 실행
test:
{{python}} -m pytest tests/
# lint + type-check + test 통합 실행
check: lint type-check test
변수를 선언할 수 있고(python := "python"), 레시피 간 의존성도 지정할 수 있다(check: lint type-check test).
설치
# macOS (Homebrew)
brew install just
# cargo
cargo install just
링크
- GitHub: casey/just
- 공식 문서: just.systems/man/en