현황
apps/blog/src/libs/api/mdx-utils.ts:24의 getAllMdxFiles가 매 호출마다 posts 디렉토리 전체를 재귀 readdirSync + 전 파일 readFileSync + 정규식 파싱한다. 캐싱이 전무하고, find-posts/series/tags가 sitemap·layout·page·태그별 페이지 등에서 반복 호출된다.
parseFrontmatterMetadata(mdx-utils.ts:73-123)가 작은따옴표 전용 정규식으로 필드를 추출한다. 큰따옴표/백틱/아포스트로피/줄바꿈에서 조용히 실패할 수 있고, 실패 시 console.error 후 스킵하므로 포스트가 목록에서 통째로 사라질 수 있다.
문제
- 정적 페이지 1개 생성에 같은 디렉토리를 수차례 재스캔 → 포스트가 10배가 되면 빌드 시간이 비선형으로 증가한다.
- 파싱 실패가 빌드 성공인 채로 포스트를 누락시킨다.
제안
getAllMdxFiles를 React cache()로 래핑 + 모듈 레벨 메모이즈
- 파서: 따옴표 종류(
'/"/백틱)를 모두 허용하도록 보강 + 파싱 실패를 빌드 실패로 승격(silent skip 금지)
임팩트 / 난이도
임팩트 상 / 난이도 하~중
🤖 코드베이스 조사 기반 작성 (Claude Code)
현황
apps/blog/src/libs/api/mdx-utils.ts:24의getAllMdxFiles가 매 호출마다 posts 디렉토리 전체를 재귀readdirSync+ 전 파일readFileSync+ 정규식 파싱한다. 캐싱이 전무하고, find-posts/series/tags가 sitemap·layout·page·태그별 페이지 등에서 반복 호출된다.parseFrontmatterMetadata(mdx-utils.ts:73-123)가 작은따옴표 전용 정규식으로 필드를 추출한다. 큰따옴표/백틱/아포스트로피/줄바꿈에서 조용히 실패할 수 있고, 실패 시console.error후 스킵하므로 포스트가 목록에서 통째로 사라질 수 있다.문제
제안
getAllMdxFiles를 Reactcache()로 래핑 + 모듈 레벨 메모이즈'/"/백틱)를 모두 허용하도록 보강 + 파싱 실패를 빌드 실패로 승격(silent skip 금지)임팩트 / 난이도
임팩트 상 / 난이도 하~중
🤖 코드베이스 조사 기반 작성 (Claude Code)