예제
KO

증분 빌드

증분 빌드는 파일 체크섬과 의존성 변경을 추적해 변경되지 않은 페이지를 건너뜁니다. 페이지가 많은 사이트에서 재빌드 시간이 크게 줄어듭니다.

hwaro build --cache

사용 시점

증분 빌드는 다음 상황에서 효과가 큽니다.

사용 방법

캐시 활성화

hwaro build --cache

첫 실행에서는 모든 페이지를 빌드하고 체크섬을 .hwaro_cache.json에 저장합니다. 이후 빌드부터는 변경된 파일만 다시 처리합니다.

전체 재빌드 강제

hwaro build --cache --full

--full 플래그는 캐시를 비우고 모든 페이지를 처음부터 다시 빌드합니다. 빌드가 끝나면 새 캐시가 저장되므로, 다음에 --full 없이 빌드하면 다시 증분 빌드로 동작합니다.

동작 방식

변경 감지

캐시 항목마다 다음을 추적합니다.

mtime이 그대로면 내용을 읽지 않고 변경 없음으로 판단합니다. mtime이 다르면 콘텐츠 해시를 계산해 비교하고, 실제로 변경됐는지 확인합니다.

의존성 무효화

파일별 체크섬 외에도, 각 페이지가 실제로 무엇에 의존하는지 추적합니다.

템플릿 의존성 추적은 모든 템플릿 참조가 문자열 리터럴이어야 동작합니다. 동적 참조({% include some_var %})를 쓰는 템플릿이 하나라도 있으면 사이트 전체 무효화로 전환되어, 템플릿이 하나라도 바뀌면 모든 페이지를 재빌드합니다. 명시적으로 끌 수도 있습니다.

[build]
template_deps = false  # 템플릿이 바뀌면 모든 페이지를 재빌드

건너뛰는 작업

페이지와 그 의존성이 모두 변경되지 않았다면:

serve 모드

개발 서버(hwaro serve)는 더 정밀한 증분 전략을 사용합니다.

변경 유형 전략
콘텐츠 파일만 영향받는 페이지와 인접 페이지만 다시 파싱·렌더링
템플릿 파일만 수정된 템플릿이 템플릿 클로저에 포함된 페이지만 다시 렌더링 (추적이 꺼져 있거나, 그래프에 동적 참조가 있거나, 수정된 파일이 templates/hooks/ 아래에 있으면 전체 페이지)
설정 파일 전체 재빌드
정적 파일만 변경된 파일만 복사

캐시 파일

캐시는 프로젝트 루트의 .hwaro_cache.json에 저장됩니다. 이 파일에는 다음이 들어 있습니다.

.hwaro_cache.json.gitignore에 추가합니다.

.hwaro_cache.json

플래그 참조

플래그 설명
--cache 증분 빌드 캐시 활성화
--full 전체 재빌드 강제(캐시를 비우고 다시 채움)

예시

# 첫 빌드 — 캐시 생성
hwaro build --cache

# 파일 몇 개 수정 후 재빌드 — 변경된 페이지만 다시 렌더링
hwaro build --cache

# 뭔가 이상할 때 — 깨끗하게 전체 재빌드
hwaro build --cache --full

# 다른 플래그와 조합
hwaro build --cache --minify --parallel

함께 보기