--- id: wiki-2026-0508-turborepo-환경-구성 title: Turborepo 환경 구성 category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-C5884C] duplicate_of: none source_trust_level: A confidence_score: 0.9 tags: [auto-reinforced] raw_sources: [] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - [[Turborepo]] 환경 구성" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Turborepo 환경 구성]] ## 📌 한 줄 통찰 (The Karpathy Summary) > Turborepo 모노레포 환경에서 [[ESLint]], [[Prettier]], [[lint-staged]]를 효율적으로 관리하기 위한 구성 방법입니다 [1]. 여러 패키지에 분산된 중복 설정과 규칙의 불일치 문제를 해결하기 위해 고안되었습니다 [1, 2]. 중앙 집중식 설정 패키지와 루트 오케스트레이션(Root Orchestration)을 결합하여, 각 패키지의 규칙을 존중하면서도 빠르고 확장 가능한 린팅 환경을 제공합니다 [3, 4]. ## 📖 구조화된 지식 (Synthesized Content) - **중앙 집중식 구성 패키지 구축:** 모노레포 내에 별도의 설정 패키지(예: `@repo/eslint-config`)를 생성하여 Base, [[Next.js]], Library용으로 조합 가능한 프리셋(preset) 설정을 제공합니다 [5, 6]. 이 패키지는 ESLint 9의 평면 구성(flat config) 형식을 사용하며, 전체 모노레포의 린팅 규칙을 제어하는 단일 진실 공급원([[Single Source of Truth]]) 역할을 합니다 [5, 7]. - **패키지별 자율성 보장:** 개별 패키지에는 최소한의 `eslint.config.mjs` 파일만 남겨두고 중앙 패키지의 프리셋을 임포트하여 사용합니다 [7]. 이를 통해 전체 코어 규칙을 일관되게 관리하면서도, 필요한 경우 특정 패키지에서 개별적인 규칙 오버라이드(override)를 수행할 수 있는 자율성을 얻을 수 있습니다 [7, 8]. - **루트 오케스트레이션 (Root Orchestration):** 모노레포 루트에 위치한 `eslint.config.mjs`에서 파일 패턴(glob 패턴)을 활용해 각 패키지를 적절한 설정에 매핑합니다 [9]. 이는 `lint-staged`와 [[Husky]] 같은 도구가 모노레포 루트에서 실행될 때 각 패키지의 경계와 고유 린팅 규칙을 정확하게 준수하도록 보장하는 핵심 설정입니다 [4, 9]. - **Husky 및 lint-staged 통합:** 루트 `package.json` 파일과 Husky의 `pre-commit` 훅을 연동하여, 코드가 커밋될 때 루트 설정에 따라 변경된 파일만 효율적으로 린팅하도록 구성합니다 [10]. - **Turborepo 캐시 무효화 적용:** `turbo.json` 설정 내 전역 의존성(`globalDependencies`)에 ESLint 설정 패키지를 등록합니다 [10]. 이를 통해 중앙의 린팅 설정이 변경될 때마다 Turborepo가 모든 관련 패키지의 캐시를 정확히 무효화(invalidate)하도록 처리합니다 [10]. ## ⚠️ 모순 및 업데이트 (Contradictions & Updates) - **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요. - **정책 변화:** Programming & Language 분야의 자동 자산화 수행. ## 🔗 지식 연결 (Graph) - **Related Topics:** [[ESLint]], [[Prettier]], [[lint-staged]], [[Husky]], [[Monorepo]] - **Projects/Contexts:** Turborepo 기반 다중 패키지 프로젝트의 린팅 및 코드 포매팅 자동화 파이프라인 구축 - **Contradictions/Notes:** 소스는 ESLint 9의 평면 구성 형식을 기준으로 최적의 환경 구성법을 제안하고 있습니다. 만약 ESLint 8 환경을 이용할 경우에는 `eslint.config.mjs` 대신 `.eslintrc.js`를 사용하고 ES 모듈 대신 CommonJS를 사용해야 하는 등 이전 형식에 맞춘 구조적 조정이 별도로 필요합니다 [11]. --- *Last updated: 2026-04-19* --- ## 🤖 LLM 활용 힌트 (How to Use This Knowledge) **언제 이 지식을 쓰는가:** - *(TODO)* **언제 쓰면 안 되는가:** - *(TODO)* ## 🧪 검증 상태 (Validation) - **정보 상태:** needs_review - **출처 신뢰도:** A - **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)* ## 🧬 중복 검사 (Duplicate Check) - **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)* - **처리 방식:** UPDATE (자동 정규화) - **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강. ## 🕓 변경 이력 (Changelog) | 날짜 | 변경 내용 | 처리 방식 | 신뢰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A | ## 💻 코드 패턴 (Code Patterns) **패턴 1:** *(TODO: 이 프로젝트 컨벤션 반영한 구조 스켈레톤)* ```text # TODO ``` ## 🤔 의사결정 기준 (Decision Criteria) **선택 A를 써야 할 때:** - *(TODO)* **선택 B를 써야 할 때:** - *(TODO)* **기본값:** > *(TODO)* ## ❌ 안티패턴 (Anti-Patterns) - **[안티패턴]:** *(TODO: 무엇을 하면 안 되는가 + 이유 + 대신 무엇을)*