component-priority.json
프로젝트에 소스 코드, 테스트, 문서 등 다양한 폴더가 있는데, 어떤 폴더를 분석 대상으로 삼아야 할까요? 모든 폴더를 분석하면 불필요한 노이즈가 섞이고, 핵심 라이브러리의 변경사항이 묻힐 수 있습니다. component-priority.json은 이 질문에 답하는 설정 파일입니다. 분석 대상 컴포넌트와 우선순위를 정의하여, 릴리스 노트에 어떤 내용이 어떤 순서로 나타날지 결정합니다.
이 파일은 .release-notes/scripts/config/component-priority.json에 위치합니다.
파일 구조
섹션 제목: “파일 구조”파일 내용은 단순합니다. analysis_priorities라는 하나의 배열에 분석할 폴더 경로를 나열합니다.
{ "analysis_priorities": [ "Src/Functorium", "Src/Functorium.Testing", "Docs", ".release-notes/scripts" ]}속성 설명
섹션 제목: “속성 설명”analysis_priorities
섹션 제목: “analysis_priorities”analysis_priorities는 분석할 폴더 경로의 배열입니다. 경로는 Git 저장소 루트를 기준으로 한 상대 경로이며, Windows에서도 슬래시(/)를 사용합니다. 대소문자는 실제 폴더명과 일치해야 합니다.
가장 기본적인 설정은 핵심 라이브러리만 분석하는 것입니다.
{ "analysis_priorities": [ "Src/Functorium", "Src/Functorium.Testing" ]}문서 변경사항도 릴리스 노트에 포함하고 싶다면 Docs 폴더를 추가합니다.
{ "analysis_priorities": [ "Src/Functorium", "Src/Functorium.Testing", "Docs" ]}프로젝트 규모가 크다면 여러 프로젝트를 나열할 수도 있습니다.
{ "analysis_priorities": [ "Src/Core", "Src/Api", "Src/Web", "Src/Infrastructure", "Tests/UnitTests", "Tests/IntegrationTests" ]}우선순위 동작
섹션 제목: “우선순위 동작”배열의 순서는 단순한 나열이 아닙니다. 순서가 곧 우선순위입니다. 배열에서 앞에 위치한 컴포넌트가 먼저 분석되고, 출력 파일에서도 먼저 나타납니다.
{ "analysis_priorities": [ "Src/Functorium", // 1순위 - 먼저 분석 및 출력 "Src/Functorium.Testing", // 2순위 "Docs" // 3순위 - 마지막 ]}이 순서는 분석 출력 파일의 나열 순서에 그대로 반영됩니다.
.analysis-output/├── Functorium.md # 1순위 컴포넌트├── Functorium.Testing.md # 2순위 컴포넌트├── Docs.md # 3순위 컴포넌트└── analysis-summary.md # 요약 (우선순위 순으로 나열)릴리스 노트의 “새로운 기능” 섹션도 같은 순서를 따릅니다. 핵심 라이브러리가 가장 먼저 나오고, 부가적인 내용은 뒤에 배치됩니다.
## 새로운 기능
### Functorium 라이브러리 (1순위)...
### Functorium.Testing 라이브러리 (2순위)...
### Docs (3순위)...폴더 없는 경우 처리
섹션 제목: “폴더 없는 경우 처리”설정 파일이 없거나 비어 있으면 기본값이 적용됩니다.
// AnalyzeAllComponents.cs의 기본값if (components.Count == 0){ components = new List<string> { "Src/Functorium", "Src/Functorium.Testing", "Docs" };}존재하지 않는 폴더가 배열에 포함되어 있어도 문제없습니다. 자동으로 건너뜁니다.
새 프로젝트 추가
섹션 제목: “새 프로젝트 추가”새 프로젝트를 분석 대상에 추가하는 과정은 세 단계입니다.
먼저 추가할 프로젝트 폴더가 실제로 존재하는지 확인합니다.
# 프로젝트 폴더 확인ls Src/
# 출력 예시:# Functorium/# Functorium.Testing/# Functorium.Web/ <- 새로 추가할 프로젝트확인했으면 설정 파일에 해당 경로를 추가합니다.
{ "analysis_priorities": [ "Src/Functorium", "Src/Functorium.Testing", "Src/Functorium.Web" ]}그리고 분석을 실행하면 새 컴포넌트에 대한 결과 파일이 생성됩니다.
cd .release-notes/scriptsdotnet AnalyzeAllComponents.cs --base origin/release/1.0 --target HEAD.analysis-output/├── Functorium.md├── Functorium.Testing.md├── Functorium.Web.md <- 새로 생성됨└── analysis-summary.md고급 설정 예시
섹션 제목: “고급 설정 예시”다양한 프로젝트 구조에 맞게 설정할 수 있습니다. 모노레포 구조라면 패키지와 앱을 구분하여 나열합니다.
{ "analysis_priorities": [ "packages/core", "packages/ui", "packages/api", "apps/web", "apps/mobile", "docs" ]}마이크로서비스 구조라면 서비스별로 나열합니다.
{ "analysis_priorities": [ "services/auth", "services/user", "services/order", "services/payment", "shared/common", "shared/contracts" ]}특정 컴포넌트만 집중적으로 분석하고 싶다면, 필요한 폴더만 남기면 됩니다. 예를 들어 테스트를 제외하려면 다음과 같이 설정합니다.
{ "analysis_priorities": [ "Src/Functorium", "Docs" ]}출력 파일명 규칙
섹션 제목: “출력 파일명 규칙”폴더 경로에서 출력 파일명이 자동으로 생성됩니다. 경로의 마지막 부분이 파일명이 되며, 슬래시는 하이픈으로 변환됩니다.
| 폴더 경로 | 출력 파일명 |
|---|---|
Src/Functorium | Functorium.md |
Src/Functorium.Testing | Functorium.Testing.md |
Docs | Docs.md |
packages/core | packages-core.md |
component-priority.json은 analysis_priorities라는 단일 배열로 분석 대상과 순서를 제어합니다. 파일 위치는 .release-notes/scripts/config/component-priority.json이고, 배열의 순서가 분석 및 출력 우선순위를 결정합니다. 설정이 없으면 Functorium, Functorium.Testing, Docs가 기본값으로 적용됩니다. 단순한 JSON 파일 하나지만, 릴리스 노트에 어떤 내용이 어떤 순서로 담길지를 결정하는 중요한 역할을 합니다.
FAQ
섹션 제목: “FAQ”Q1: analysis_priorities 배열의 순서가 릴리스 노트의 기능 나열 순서에 직접 영향을 주나요?
섹션 제목: “Q1: analysis_priorities 배열의 순서가 릴리스 노트의 기능 나열 순서에 직접 영향을 주나요?”A: 네. 배열에서 앞에 위치한 컴포넌트가 분석 출력 파일에서도, 릴리스 노트의 “새로운 기능” 섹션에서도 먼저 나타납니다. 핵심 라이브러리를 앞에 두면 사용자가 가장 중요한 변경사항을 먼저 확인할 수 있습니다.
Q2: 존재하지 않는 폴더를 배열에 포함하면 오류가 발생하나요?
섹션 제목: “Q2: 존재하지 않는 폴더를 배열에 포함하면 오류가 발생하나요?”A: 아닙니다. AnalyzeAllComponents.cs는 존재하지 않는 폴더를 자동으로 건너뜁니다. 해당 컴포넌트에 대한 Git diff와 커밋이 비어 있으므로 분석 파일이 생성되지 않을 뿐, 나머지 컴포넌트의 분석은 정상적으로 진행됩니다.
Q3: 설정 파일의 경로에서 Windows 백슬래시(\)를 사용해도 되나요?
섹션 제목: “Q3: 설정 파일의 경로에서 Windows 백슬래시(\)를 사용해도 되나요?”A: 아닙니다. 경로는 반드시 슬래시(/)를 사용해야 합니다. Git 명령어가 경로를 해석할 때 슬래시를 기준으로 하며, Windows에서도 Git은 슬래시 경로를 올바르게 처리합니다. 백슬래시를 사용하면 Git diff나 log 명령에서 해당 경로를 찾지 못할 수 있습니다.
Q4: Tests 폴더를 analysis_priorities에 포함해야 하나요?
섹션 제목: “Q4: Tests 폴더를 analysis_priorities에 포함해야 하나요?”A: 일반적으로는 포함하지 않습니다. 릴리스 노트는 사용자에게 제공되는 라이브러리의 변경사항을 전달하는 문서이므로, 테스트 코드의 변경은 대부분 불필요한 노이즈가 됩니다. 다만 테스트 라이브러리(Functorium.Testing)처럼 사용자에게 제공되는 테스트 도구는 포함하는 것이 적절합니다.