Files
2nd/01_Archive/2026-04-20/Turborepo 환경 구성.md
T

35 lines
3.7 KiB
Markdown

---
id: P-REINFORCE-AUTO-C5884C
category: "10_Wiki/💡 Topics/Programming & Language"
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - Turborepo 환경 구성"
---
# [[Turborepo 환경 구성|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 & RL Update)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
## 🔗 지식 연결 (Graph)
- **Related Topics:** [[ESLint|ESLint]], [[Prettier|Prettier]], [[lint-staged|lint-staged]], [[Husky|Husky]], [[Monorepo|Monorepo]]
- **Projects/Contexts:** Turborepo 기반 다중 패키지 프로젝트의 린팅 및 코드 포매팅 자동화 파이프라인 구축
- **Contradictions/Notes:** 소스는 ESLint 9의 평면 구성 형식을 기준으로 최적의 환경 구성법을 제안하고 있습니다. 만약 ESLint 8 환경을 이용할 경우에는 `eslint.config.mjs` 대신 `.eslintrc.js`를 사용하고 ES 모듈 대신 CommonJS를 사용해야 하는 등 이전 형식에 맞춘 구조적 조정이 별도로 필요합니다 [11].
---
*Last updated: 2026-04-19*
- Raw Source: 00_Raw/2026-04-20/Turborepo 환경 구성.md
---