--- id: P-REINFORCE-AUTO-671D24 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) α„‹α…‘α„α…΅α„α…¦α†¨α„Žα…₯ ᄉα…₯α†―α„Œα…₯α†Ό|λͺ¨λ…Έλ ˆν¬(Monorepo) μ•„ν‚€ν…μ²˜ μ„€μ •]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > λͺ¨λ…Έλ ˆν¬(Monorepo) μ•„ν‚€ν…μ²˜ 섀정은 μ—¬λŸ¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό λΌμ΄λΈŒλŸ¬λ¦¬κ°€ κ³΅μ‘΄ν•˜λŠ” λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈ ν™˜κ²½μ—μ„œ ESLint, Prettier, Husky, lint-staged λ“±μ˜ 도ꡬ듀을 효율적으둜 κ΅¬μ„±ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” λ°©λ²•λ‘ μž…λ‹ˆλ‹€ [1-3]. μ€‘λ³΅λœ μ„€μ • 파일둜 μΈν•œ κ΄€λ¦¬μ˜ 어렀움을 ν”Όν•˜κΈ° μœ„ν•΄ 쀑앙 집쀑식 μ„€μ • νŒ¨ν‚€μ§€μ™€ 루트 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜(Root Orchestration)을 λ„μž…ν•˜μ—¬ 단일 μ§„μ‹€ 곡급원(Single source of truth)을 ν˜•μ„±ν•©λ‹ˆλ‹€ [2-4]. 이λ₯Ό 톡해 νŒ¨ν‚€μ§€λ³„ μžμœ¨μ„±μ„ μœ μ§€ν•˜λ©΄μ„œλ„ 전역적인 μ½”λ“œ ν’ˆμ§ˆ κ·œμΉ™μ„ μΌκ΄€λ˜κ³  λΉ λ₯΄κ²Œ κ°•μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [4, 5]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **κΈ°μ‘΄ λͺ¨λ…Έλ ˆν¬ μ„€μ •μ˜ 문제점** 일반적인 λͺ¨λ…Έλ ˆν¬μ—λŠ” Next.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜, 라이브러리 νŒ¨ν‚€μ§€, 곡유 μ½”λ“œ 등이 ν•¨κ»˜ μ‘΄μž¬ν•©λ‹ˆλ‹€ [2]. νŒ¨ν‚€μ§€λ§ˆλ‹€ κ°œλ³„μ μœΌλ‘œ `.eslintrc.json`κ³Ό `.eslintignore` νŒŒμΌμ„ μž‘μ„±ν•˜κ³  ESLint와 Prettier 쒅속성을 μ€‘λ³΅μœΌλ‘œ μ„€μΉ˜ν•˜κ²Œ 되면, λ¦°νŒ… κ·œμΉ™μ΄ νŒŒνŽΈν™”λ˜κ³  관리가 맀우 μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€ [2]. 특히 λͺ¨λ…Έλ ˆν¬ 루트 λ‹¨μœ„μ—μ„œ `lint-staged`λ₯Ό μ‹€ν–‰ν•˜μ—¬ λ³€κ²½λœ 파일만 κ²€μ‚¬ν•˜λ € ν•  λ•Œ, 각 νŒ¨ν‚€μ§€μ˜ κ³ μœ ν•œ κ·œμΉ™μ„ μ€€μˆ˜ν•˜λ©΄μ„œ μ‹€ν–‰ν•˜λŠ” 것이 큰 μž₯μ• λ¬Όλ‘œ μž‘μš©ν•©λ‹ˆλ‹€ [3]. - **루트 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ 및 쀑앙 집쀑식 μ•„ν‚€ν…μ²˜** ν˜„λŒ€μ μΈ λͺ¨λ…Έλ ˆν¬ ν™˜κ²½μ—μ„œλŠ” ꡬ성 쀑볡을 쀄이기 μœ„ν•΄ λ‹€μŒκ³Ό 같은 3단계 μ•„ν‚€ν…μ²˜λ₯Ό λ„μž…ν•©λ‹ˆλ‹€ [3]. 1. **쀑앙 집쀑식 μ„€μ • νŒ¨ν‚€μ§€ 생성:** `@repo/eslint-config`와 같은 λ‚΄λΆ€ νŒ¨ν‚€μ§€λ₯Ό λ§Œλ“€μ–΄ TypeScript 지원 및 Prettier 톡합 등을 ν¬ν•¨ν•˜λŠ” κΈ°λ³Έ(base) μ„€μ •κ³Ό Next.js, 일반 λΌμ΄λΈŒλŸ¬λ¦¬μ— 맞좘 사전 μ„€μ •(Preset)을 λͺ¨λ“ˆλ‘œ κ΅¬μ„±ν•©λ‹ˆλ‹€ [3, 6, 7]. 2. **νŒ¨ν‚€μ§€ 레벨 μ„€μ • 적용:** 각 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 라이브러리 νŒ¨ν‚€μ§€λŠ” λ…μžμ μΈ μ„€μ • νŒŒμΌμ„ 쀑볡 μƒμ„±ν•˜λŠ” λŒ€μ‹ , μ€‘μ•™μ—μ„œ λ§Œλ“  섀정을 μ΅œμ†Œν•œμ˜ μ½”λ“œλ‘œ 가져와(import) μ‚¬μš©ν•©λ‹ˆλ‹€ [4]. 3. **루트 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜(Root Orchestration) ꡬ성:** λͺ¨λ…Έλ ˆν¬ 루트의 μ„€μ • νŒŒμΌμ—μ„œ νŠΉμ • 파일 νŒ¨ν„΄(Glob pattern)에 따라 μ•Œλ§žμ€ νŒ¨ν‚€μ§€ 섀정이 μ μš©λ˜λ„λ‘ λ§€ν•‘ν•©λ‹ˆλ‹€ [8]. 이λ₯Ό 톡해 각 νŒ¨ν‚€μ§€μ˜ 경계λ₯Ό μ‘΄μ€‘ν•˜λ©΄μ„œ μ „μ—­ κΈ°λ³Έ κ·œμΉ™μ„ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [8]. - **μž‘μ—… νŒŒμ΄ν”„λΌμΈ 연동과 μ„±λŠ₯ μ΅œμ ν™”** - **Husky와 lint-staged 연동:** 루트 `package.json`에 `lint-staged`λ₯Ό κ΅¬μ„±ν•˜κ³  Husky의 `pre-commit` 훅을 μ„€μ •ν•˜μ—¬, 루트 μ„€μ •(Root config) κΈ°μ€€μœΌλ‘œ λ³€κ²½λœ 파일만 효율적으둜 λ¦°νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€ [9]. 이 κ³Όμ •μ—μ„œ 루트 μ„€μ •μ˜ 파일 νŒ¨ν„΄ 맀핑을 톡해 κ°œλ³„ νŒ¨ν‚€μ§€ κ·œμΉ™μ΄ μ•ˆμ „ν•˜κ²Œ 보μž₯λ©λ‹ˆλ‹€ [9]. - **Turborepo 캐싱 톡합:** 쀑앙 ESLint μ„€μ • νŒ¨ν‚€μ§€λ₯Ό `turbo.json`의 μ „μ—­ 쒅속성(global dependency)으둜 μΆ”κ°€ν•¨μœΌλ‘œμ¨, 린트 κ·œμΉ™μ΄ 변경될 λ•Œ λͺ¨λ“  νŒ¨ν‚€μ§€μ˜ Turborepo μΊμ‹œλ₯Ό μžλ™μœΌλ‘œ λ¬΄νš¨ν™”ν•˜μ—¬ 항상 μ΅œμ‹  κ·œμΉ™μ΄ μ μš©λ˜λ„λ‘ ν•©λ‹ˆλ‹€ [9]. - **곡식 μ§€μΉ¨μ˜ λŒ€μ•ˆ:** `lint-staged`의 곡식 κ°€μ΄λ“œλŠ” λ£¨νŠΈμ— 도ꡬλ₯Ό μ„€μΉ˜ν•˜κ³  각 νŒ¨ν‚€μ§€λ³„ κ°œλ³„ μ„€μ • νŒŒμΌμ„ 두어 'κ°€μž₯ κ°€κΉŒμš΄(closest) ꡬ성'을 κ²©λ¦¬ν•˜μ—¬ μ‚¬μš©ν•˜λ„λ‘ ꢌμž₯ν•©λ‹ˆλ‹€ [10]. ν•˜μ§€λ§Œ 루트 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜μ„ ν™œμš©ν•˜λ©΄ μ—¬λŸ¬ 섀정을 μ‘°μœ¨ν•˜μ—¬ λ”μš± μœ μ§€λ³΄μˆ˜κ°€ νŽΈν•˜κ³  λΉ λ₯΄λ©° μœ μ—°ν•œ 쀑앙 집쀑식 ν™˜κ²½μ„ κ°–μΆœ 수 μžˆμŠ΅λ‹ˆλ‹€ [11]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[Turborepo|Turborepo]], [[ESLint|ESLint]], [[Prettier|Prettier]], [[Husky|Husky]], [[lint-staged|lint-staged]] - **Projects/Contexts:** Next.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 라이브러리 관리, λͺ¨λ…Έλ ˆν¬ 린트 μžλ™ν™” - **Contradictions/Notes:** μ†ŒμŠ€ [10]에 λ”°λ₯΄λ©΄ `lint-staged`의 곡식 지침은 μ—¬λŸ¬ ν•˜μœ„ νŒ¨ν‚€μ§€μ˜ ꡬ성 νŒŒμΌμ„ μƒν˜Έ 격리된 μƒνƒœλ‘œ μ·¨κΈ‰ν•˜μ—¬ κ°€μž₯ κ°€κΉŒμš΄ νŒŒμΌμ„ μ μš©ν•˜λΌκ³  μ„€λͺ…ν•˜μ§€λ§Œ, μ†ŒμŠ€ [3, 8, 12]μ—μ„œλŠ” 단일 μ§„μ‹€ 곡급원을 기반으둜 λ£¨νŠΈμ—μ„œ 파일 νŒ¨ν„΄μ„ λ§€ν•‘ν•΄μ£ΌλŠ” 루트 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜(Root Orchestration) 방식이 μœ μ§€λ³΄μˆ˜μ™€ μ‹€ν–‰ 속도 λ©΄μ—μ„œ λͺ¨λ…Έλ ˆν¬μ— 더 λ›°μ–΄λ‚œ 해결책이라고 μ£Όμž₯ν•©λ‹ˆλ‹€. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/λͺ¨λ…Έλ ˆν¬(Monorepo) μ•„ν‚€ν…μ²˜ μ„€μ •.md ---