liminfo

Changelog Generator

Changelog 생성기 - Conventional Commits → Keep a Changelog 변환

Changelog Generator 소개

Changelog Generator는 Conventional Commit 메시지를 Keep a Changelog 형식을 따르는 구조화된, 사람이 읽기 좋은 Markdown 변경 이력으로 변환합니다. 커밋 메시지를 한 줄씩 붙여넣고 버전 번호를 설정하면, 도구가 타입별로 그룹화하여 라벨을 붙입니다: feat는 Added, fix는 Fixed, refactor와 style은 Changed, perf는 Performance, docs는 Documentation, test는 Testing, chore는 Maintenance, ci는 CI/CD, build는 Build가 됩니다.

소프트웨어 팀은 릴리스 간에 무엇이 변경되었는지 사용자, 이해관계자, 다른 개발자에게 전달하기 위해 변경 이력을 사용합니다. git log에서 수동으로 작성하는 것은 번거롭고 오류가 발생하기 쉽습니다. 이 도구는 그룹화와 포맷팅 작업을 자동화합니다: Conventional Commits 명세 패턴(type(scope): description)에 따라 각 줄을 파싱하고, 스코프와 설명을 추출하여 현재 날짜와 버전 스탬프가 있는 정렬된 Markdown 문서를 생성합니다.

출력은 Keep a Changelog 순서 규칙(Added, Changed, Fixed, Performance, Documentation, Testing, CI/CD, Build, Maintenance)을 따르므로 섹션은 항상 예측 가능한 독자 친화적 순서로 배열됩니다. 커밋 컨벤션 패턴에 맞지 않는 줄은 Other 섹션에 포함되어 누락 없이 처리됩니다. 생성된 Markdown은 CHANGELOG.md 파일이나 GitHub 릴리스 노트에 바로 붙여넣을 수 있습니다.

주요 기능

  • Conventional Commits 형식 파싱: type(scope): description
  • 섹션별 그룹화: Added, Fixed, Changed, Performance, Documentation, Testing, CI/CD, Build, Maintenance
  • 빠른 스캔을 위한 선택적 스코프 추출 및 굵은 글씨 표시 (예: auth, api, ui)
  • ISO 8601 형식(YYYY-MM-DD)으로 현재 날짜 자동 추가
  • 모든 semver 문자열을 위한 설정 가능한 버전 번호 필드
  • 컨벤션에 맞지 않는 줄은 Other 섹션에 포함 — 아무것도 누락되지 않음
  • 완성된 Markdown 변경 이력 출력 원클릭 복사
  • 100% 클라이언트 사이드 — 민감한 커밋 메시지를 업로드 없이 안전하게 처리

자주 묻는 질문

Conventional Commits 명세란 무엇인가요?

Conventional Commits는 구조화된 형식으로 커밋 메시지를 작성하기 위한 가벼운 컨벤션입니다: type(scope): description. type은 변경 종류를 설명하고(feat: 새 기능, fix: 버그 수정, chore: 유지보수 등), 선택적 scope은 영향 받은 코드베이스 영역을 명명하며, description은 변경 사항을 요약합니다. semantic-release와 이 변경 이력 생성기 같은 도구들이 이 구조화된 메시지를 자동으로 파싱합니다.

생성기가 인식하는 커밋 타입은 무엇인가요?

생성기는 feat(Added), fix(Fixed), docs(Documentation), refactor(Changed), perf(Performance), test(Testing), chore(Maintenance), style(Changed), ci(CI/CD), build(Build)를 인식합니다. 인식되지 않는 타입의 커밋은 Other 섹션에 포함됩니다.

커밋 메시지에 스코프를 어떻게 포함하나요?

타입 뒤와 콜론 앞에 괄호로 스코프를 작성하세요: feat(auth): add OAuth2 login. 생성기가 스코프를 추출하여 변경 이력 항목 앞에 굵은 글씨로 표시합니다(auth: add OAuth2 login). 한눈에 서브시스템별로 항목을 필터링하기 쉬워집니다.

컨벤션을 따르지 않는 커밋은 어떻게 처리되나요?

type(scope): description 패턴에 맞지 않는 줄은 전체 텍스트로 변경 이력의 Other 섹션에 포함됩니다. 이렇게 하면 팀이 Conventional Commits를 도입하기 전에 작성된 커밋 메시지도 누락 없이 처리됩니다.

Keep a Changelog 형식이란 무엇인가요?

Keep a Changelog는 keepachangelog.com에서 제안하는 변경 이력 파일 구조화를 위한 널리 채택된 규칙입니다. 표준화된 섹션 순서(Added, Changed, Deprecated, Removed, Fixed, Security)를 규정하며 원시 git log 출력 대신 사람이 읽기 좋은 언어를 권장합니다. 이 도구는 Conventional Commits 타입 어휘에 맞게 조정된 동일한 섹션 기반 구조를 따릅니다.

git log 출력을 직접 사용할 수 있나요?

네. git log --oneline --no-merges를 실행하고 출력을 복사하여 붙여넣으세요. 커밋 메시지가 Conventional Commits 형식을 따른다면 올바르게 그룹화됩니다. git 짧은 해시로 시작하는 줄은 타입 패턴에 맞지 않으므로 Other 섹션에 포함됩니다.

이 도구는 BREAKING CHANGE(파괴적 변경)를 지원하나요?

현재 버전은 타입 접두사로 커밋을 그룹화하며, Conventional Commits의 BREAKING CHANGE 푸터 토큰이나 ! 접미사를 별도로 파싱하지 않습니다. feat!: 또는 BREAKING CHANGE 푸터로 표시된 파괴적 변경은 타입에 따라 Added 또는 Other 섹션에 포함됩니다.

출력을 CHANGELOG.md에 직접 붙여넣을 수 있나요?

네. 출력은 버전 헤더에 ##, 섹션 헤더에 ###을 사용하는 표준 Markdown으로 Keep a Changelog 형식과 일치합니다. 출력을 복사하여 CHANGELOG.md 파일의 이전 항목 위에 추가하면 깔끔한 역순 변경 이력이 완성됩니다.