--- id: P-REINFORCE-AUTO-19D53A category: "[[10_Wiki/πŸ’‘ Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - λͺ¨λ…Έλ ˆν¬(Monorepo) μ„€μ • 쀑앙화" --- # [[λͺ¨λ…Έλ ˆν¬(Monorepo) μ„€μ • 쀑앙화]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > λͺ¨λ…Έλ ˆν¬(Monorepo) μ„€μ • μ€‘μ•™ν™”λŠ” λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈ λ‚΄ μ—¬λŸ¬ νŒ¨ν‚€μ§€μ— λΆ„μ‚°λ˜μ–΄ μžˆλŠ” μ½”λ“œ μ»¨λ²€μ…˜(ESLint, Prettier λ“±) 섀정을 단일 핡심 νŒ¨ν‚€μ§€λ‘œ ν†΅ν•©ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” μ•„ν‚€ν…μ²˜μž…λ‹ˆλ‹€ [1-3]. 이λ₯Ό 톡해 쑰직 λ‚΄ μ½”λ“œ ν’ˆμ§ˆ κ·œμΉ™μ˜ 단일 μ§„μ‹€ 곡급원(Single Source of Truth)을 κ΅¬μΆ•ν•˜μ—¬ μ„€μ • νŒŒνŽΈν™”λ₯Ό λ°©μ§€ν•©λ‹ˆλ‹€ [3, 4]. 결과적으둜 전역적인 κ·œμΉ™ μ—…λ°μ΄νŠΈλ₯Ό μš©μ΄ν•˜κ²Œ ν•˜κ³ , 쀑볡을 μ œκ±°ν•˜μ—¬ λ¦°νŒ… 검사 및 μœ μ§€λ³΄μˆ˜ νš¨μœ¨μ„ κ·ΉλŒ€ν™”ν•©λ‹ˆλ‹€ [3, 5]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **λ°œμƒν•˜λŠ” 문제점 (μ„€μ • νŒŒνŽΈν™”)** λŒ€κ·œλͺ¨ λͺ¨λ…Έλ ˆν¬(예: Turborepo 기반) ν™˜κ²½μ—λŠ” λ‹€μˆ˜μ˜ Next.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜, 라이브러리, 곡유 μ½”λ“œ νŒ¨ν‚€μ§€κ°€ ν˜Όμž¬λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€ [2]. νŒ¨ν‚€μ§€λ§ˆλ‹€ μ€‘λ³΅λœ `.eslintrc.json`κ³Ό `.eslintignore` 파일 및 μ˜μ‘΄μ„±μ΄ 흩어져 있으면, κ·œμΉ™μ„ μ „μ—­μ μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜κΈ° μ–΄λ ΅κ³  섀정이 μΌκ΄€λ˜μ§€ μ•Šκ²Œ μ–΄κΈ‹λ‚˜λŠ” 'μ„€μ • λ“œλ¦¬ν”„νŠΈ(Configuration Drift)'κ°€ λ°œμƒν•˜μ—¬ μœ μ§€λ³΄μˆ˜μ— 큰 μ•…μ˜ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€ [1-3]. * **쀑앙화 μ•„ν‚€ν…μ²˜ 섀계** μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ κ΅¬μ‘°λŠ” 크게 μ„Έ κ°€μ§€ μš”μ†Œλ‘œ λ‚˜λ‰©λ‹ˆλ‹€ [6]. 1. **쀑앙 μ„€μ • νŒ¨ν‚€μ§€ 생성**: λ‚΄λΆ€μ μœΌλ‘œ 곡톡 μ‚¬μš©ν•  νŒ¨ν‚€μ§€(예: `@repo/eslint-config`)λ₯Ό μƒμ„±ν•˜κ³ , Base, Next.js, Library용 λ“± λͺ©μ μ— λ§žλŠ” μ‘°ν•© κ°€λŠ₯ν•œ(composable) 프리셋을 λ‚΄λ³΄λƒ…λ‹ˆλ‹€ [6-8]. 2. **κ°œλ³„ νŒ¨ν‚€μ§€ 적용**: κ°œλ³„ νŒ¨ν‚€μ§€λ“€μ€ λΆˆν•„μš”ν•œ 쀑볡 μ„€μ • λŒ€μ‹ , 쀑앙 νŒ¨ν‚€μ§€μ—μ„œ μ œκ³΅ν•˜λŠ” 프리셋을 가져와(import) μ‚¬μš©ν•˜λ˜ ν•„μš”ν•œ νŒ¨ν‚€μ§€λ³„ μ˜€λ²„λΌμ΄λ“œ(override)만 μ΅œμ†Œν•œμœΌλ‘œ μ„ μ–Έν•©λ‹ˆλ‹€ [4, 5, 9]. 3. **루트 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜(Root Orchestration)**: λͺ¨λ…Έλ ˆν¬ μ΅œμƒλ‹¨μ— μ „μ—­ μ„€μ • 파일(`eslint.config.mjs`)을 λ§Œλ“€κ³  파일 νŒ¨ν„΄(glob pattern)을 μ΄μš©ν•΄ νŠΉμ • νŒ¨ν‚€μ§€ κ²½λ‘œμ— μ μ ˆν•œ 프리셋을 λ§€ν•‘ν•©λ‹ˆλ‹€ [10]. μ΄λŠ” 각 νŒ¨ν‚€μ§€μ˜ 경계λ₯Ό μ‘΄μ€‘ν•˜λ©΄μ„œλ„ ν•˜λ‚˜μ˜ μœ„μΉ˜μ—μ„œ ν†΅μ œν•  수 있게 ν•΄μ€λ‹ˆλ‹€ [10]. * **μžλ™ν™” λ„κ΅¬μ™€μ˜ κ²°ν•© 및 이점** * 루트 λ ˆλ²¨μ—μ„œ `Husky`와 `lint-staged`λ₯Ό μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ„€μ •κ³Ό κ²°ν•©ν•˜λ©΄, 컀밋 μ „(pre-commit)에 λ³€κ²½λœ 파일만 효율적으둜 κ²€μ‚¬ν•˜λ©΄μ„œλ„ 각 νŒ¨ν‚€μ§€μ— λ§žλŠ” 린트 κ·œμΉ™μ„ μ •ν™•νžˆ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [11]. * μ€‘μ•™ν™”λœ 섀정을 μ μš©ν•˜λ©΄ νŒ¨ν‚€μ§€ μ „λ°˜μ— 걸친 쀑볡 μ˜μ‘΄μ„±μ„ μ œκ±°ν•΄ `package-lock.json` 크기가 μΆ•μ†Œλ˜κ³ , μ „λ°˜μ μΈ μ½”λ“œ 라인 μˆ˜κ°€ λŒ€ν­ κ°μ†Œν•©λ‹ˆλ‹€ [12]. * λ˜ν•œ `Turborepo`의 캐싱 κΈ°λŠ₯κ³Ό 맞물렀 μΊμ‹œ λ¬΄νš¨ν™”λ₯Ό μ΅œμ†Œν™”ν•˜κ³  λΉ λ₯Έ λ¦°νŒ…κ³Ό μ‹ μ†ν•œ 컀밋이 κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€ [5, 11]. * **기술적 μœ μ˜μ‚¬ν•­** * ν•΄λ‹Ή 쀑앙화 ꡬ성 방식은 ν”Œλž« ꡬ성(Flat Config) ν˜•μ‹μ„ μ§€μ›ν•˜λŠ” ESLint 9 버전 이상에 μ΅œμ ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€ [3, 7]. * ESLint 8 ν™˜κ²½μ—μ„œ 이 νŒ¨ν„΄μ„ μ μš©ν•˜λ €λ©΄ `.eslintrc.js` 파일 ν™•μž₯μžμ™€ CommonJS λͺ¨λ“ˆ 내보내기λ₯Ό μ‚¬μš©ν•˜λŠ” λ“±μ˜ 좔가적인 쑰정이 ν•„μš”ν•©λ‹ˆλ‹€ [13]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[ESLint]], [[Prettier]], [[Turborepo]], [[Husky]], [[lint-staged]] - **Projects/Contexts:** [[λŒ€κ·œλͺ¨ λͺ¨λ…Έλ ˆν¬(Monorepo) ν”„λ‘œμ νŠΈ]], [[닀쀑 νŒ¨ν‚€μ§€ 관리 ν™˜κ²½]] - **Contradictions/Notes:** λͺ¨λ…Έλ ˆν¬ ν™˜κ²½μ—μ„œ `lint-staged`λ₯Ό μ μš©ν•˜λŠ” ꡬ쑰와 κ΄€λ ¨ν•˜μ—¬ λ‹€λ₯Έ 관점이 μ‘΄μž¬ν•©λ‹ˆλ‹€. 일반적인 κ°€μ΄λ“œμ—μ„œλŠ” νŒ¨ν‚€μ§€ κ°„μ˜ 격리성 확보λ₯Ό μœ„ν•΄ 각 νŒ¨ν‚€μ§€λ³„λ‘œ λ…λ¦½λœ μ„€μ • νŒŒμΌμ„ λ‘˜ 것을 ꢌμž₯ν•˜μ§€λ§Œ [14, 15], Turborepoλ₯Ό ν™œμš©ν•˜λŠ” λͺ¨λ…Έλ ˆν¬ ν™˜κ²½μ—μ„œλŠ” μ΅œμƒμœ„μ—μ„œ '루트 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜(Root Orchestration)'을 톡해 파일 νŒ¨ν„΄μœΌλ‘œ λ¦°νŒ…μ„ 쀑앙 μ œμ–΄ν•˜λŠ” 것이 쀑볡 μ œκ±°μ™€ 일관성 λ©΄μ—μ„œ 더 효과적인 ν•΄κ²°μ±…μœΌλ‘œ μ œμ‹œλ˜κ³  μžˆμŠ΅λ‹ˆλ‹€ [6, 9, 16]. --- *Last updated: 2026-04-19* - Raw Source: [[00_Raw/2026-04-20/λͺ¨λ…Έλ ˆν¬(Monorepo) μ„€μ • 쀑앙화.md]] ---