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

링크