--- id: P-REINFORCE-AUTO-BDDA30 category: "[[10_Wiki/πŸ’‘ Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ESLint" --- # [[ESLint]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > ESLintλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 및 νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ½”λ“œμ—μ„œ 문법적 였λ₯˜μ™€ 잠재적 버그λ₯Ό μ‹λ³„ν•˜κ³  μ½”λ”© μ»¨λ²€μ…˜μ„ κ°•μ œν•˜λŠ” 정적 뢄석 도ꡬ(Linter)μž…λ‹ˆλ‹€ [1, 2]. μ†ŒμŠ€ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜μ§€ μ•Šκ³  좔상 ꡬ문 트리(AST)둜 λ³€ν™˜ν•˜μ—¬ 사전에 μ •μ˜λœ 논리 및 μŠ€νƒ€μΌ κ·œμΉ™μ„ μ μš©ν•¨μœΌλ‘œμ¨ λŸ°νƒ€μž„ μ—λŸ¬λ₯Ό λ°©μ§€ν•©λ‹ˆλ‹€ [3, 4]. 주둜 μ½”λ“œ ν’ˆμ§ˆμ„ 보μž₯ν•˜κ³  νŒ€ λ‚΄ μΌκ΄€λœ μŠ€νƒ€μΌμ„ μœ μ§€ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λ©°, μ½”λ“œ ν¬λ§€νŒ… 도ꡬ인 Prettier와 ν•¨κ»˜ λͺ¨λ˜ μ›Ή 개발 ν™˜κ²½μ˜ ν•„μˆ˜μ μΈ λ„κ΅¬λ‘œ ν™œμš©λ©λ‹ˆλ‹€ [1, 5]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **정적 뢄석 및 μ½”λ“œ ν’ˆμ§ˆ 관리** ESLintλŠ” λŸ°νƒ€μž„ ν™˜κ²½ 이전에 μ†ŒμŠ€ μ½”λ“œμ˜ 문제 νŒ¨ν„΄μ„ μ‹λ³„ν•˜λŠ” 정적 뢄석 λ„κ΅¬μž…λ‹ˆλ‹€ [1, 6]. μ‚¬μš©λ˜μ§€ μ•ŠλŠ” λ³€μˆ˜, κΈ€λ‘œλ²Œ μŠ€μ½”ν”„ μ˜€μ—Ό, 잘λͺ»λœ API μ‚¬μš© λ“± 잠재적인 버그λ₯Ό κ²€μΆœν•˜κ³  μ½”λ“œ 퀄리티 κ·œμΉ™μ„ κ°•μ œν•˜μ—¬ μΌκ΄€λœ μ½”λ“œ μž‘μ„±μ„ λ•μŠ΅λ‹ˆλ‹€ [2, 7, 8]. 발견된 문제 쀑 νŠΉμ • λ¬Έλ²•μ΄λ‚˜ μŠ€νƒ€μΌ μœ„λ°˜μ€ `--fix` μ˜΅μ…˜μ„ 톡해 μžλ™μœΌλ‘œ μˆ˜μ •(Auto-fixing)ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [9-11]. * **μ„€μ • 및 κ·œμΉ™ μ»€μŠ€ν„°λ§ˆμ΄μ§•** ESLint의 κ·œμΉ™μ€ `off`(0), `warn`(1), `error`(2) λ“± μ„Έ κ°€μ§€ μˆ˜μ€€μœΌλ‘œ μ»€μŠ€ν„°λ§ˆμ΄μ§•ν•˜μ—¬ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [12, 13]. ν”„λ‘œμ νŠΈλ³„λ‘œ `.eslintrc` νŒŒμΌμ΄λ‚˜ ESLint 9λΆ€ν„° λ„μž…λœ Flat Config(예: `eslint.config.mjs`) 포맷을 톡해 섀정을 μ€‘μ•™ν™”ν•˜κ³  관리할 수 μžˆμŠ΅λ‹ˆλ‹€ [14-16]. 주둜 Airbnbλ‚˜ Google μŠ€νƒ€μΌ κ°€μ΄λ“œμ²˜λŸΌ 널리 μ“°μ΄λŠ” κ·œμΉ™μ„ ν™•μž₯(extends)ν•˜μ—¬ μ‚¬μš©ν•˜λ©°, TypeScript(`@typescript-eslint`), React(`eslint-plugin-react`) 등을 μ§€μ›ν•˜λŠ” λ‹€μ–‘ν•œ μ„œλ“œνŒŒν‹° ν”ŒλŸ¬κ·ΈμΈ(plugins)을 μž₯μ°©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [17-19]. * **Prettierμ™€μ˜ μ—­ν•  λΆ„λ‹΄ 및 좩돌 ν•΄κ²°** ESLintλŠ” μ½”λ“œ ν’ˆμ§ˆ(버그 탐지)에 μ΄ˆμ μ„ λ§žμΆ”λŠ” 반면, PrettierλŠ” μ½”λ“œ ν¬λ§€νŒ…(μ‹œκ°μ  톡일성)에 쀑점을 λ‘‘λ‹ˆλ‹€ [2, 5, 20]. ESLint에도 일뢀 ν¬λ§€νŒ… κ·œμΉ™μ΄ ν¬ν•¨λ˜μ–΄ μžˆμ–΄ 두 도ꡬλ₯Ό ν•¨κ»˜ μ‚¬μš©ν•  경우 좩돌이 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [21, 22]. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ `eslint-config-prettier` νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•˜μ—¬ Prettier와 μΆ©λŒν•˜λŠ” ESLint의 μŠ€νƒ€μΌ κ·œμΉ™μ„ λΉ„ν™œμ„±ν™”(off)ν•˜λŠ” 방법이 κ°€μž₯ 널리 ꢌμž₯λ©λ‹ˆλ‹€ [21, 23-25]. * **μ›Œν¬ν”Œλ‘œμš° 및 μžλ™ν™” 연동** μ½”λ“œ λ³€κ²½ 사항이 Git μ €μž₯μ†Œμ— 반영되기 μ „, λ‚˜μœ μ½”λ“œκ°€ μ»€λ°‹λ˜λŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ μžλ™ν™” νŒŒμ΄ν”„λΌμΈκ³Ό κ²°ν•©ν•˜μ—¬ μ‚¬μš©λ©λ‹ˆλ‹€ [26, 27]. 주둜 `Husky`와 `lint-staged` 도ꡬλ₯Ό ν™œμš©ν•˜μ—¬, Git의 `pre-commit` ν›…(hook) λ‹¨κ³„μ—μ„œ λ³€κ²½λœ(staged) νŒŒμΌμ— λŒ€ν•΄μ„œλ§Œ ESLint 검사 및 μžλ™ μˆ˜μ •μ„ μ‹€ν–‰ν•˜λ„λ‘ κ΅¬μ„±ν•©λ‹ˆλ‹€ [11, 28-30]. λŒ€κ·œλͺ¨ λͺ¨λ…Έλ ˆν¬(Monorepo) ν™˜κ²½μ—μ„œλŠ” 쀑볡 ꡬ성을 ν”Όν•˜κΈ° μœ„ν•΄ 쀑앙집쀑식 ESLint μ„€μ • νŒ¨ν‚€μ§€λ₯Ό λ§Œλ“€μ–΄ 각 ν•˜μœ„ νŒ¨ν‚€μ§€κ°€ 이λ₯Ό κ³΅μœ ν•˜λ„λ‘ κ΅¬μ„±ν•˜μ—¬ νš¨μœ¨μ„±μ„ κ·ΉλŒ€ν™”ν•©λ‹ˆλ‹€ [15, 31, 32]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[Prettier]], [[Husky]], [[lint-staged]], [[정적 뢄석(Static Analysis)]], [[AST(Abstract Syntax Tree)]] - **Projects/Contexts:** [[λͺ¨λ…Έλ ˆν¬(Monorepo) 기반 ꡬ성 쀑앙화]], [[Git Hook을 μ΄μš©ν•œ CI/CD μžλ™ν™” νŒŒμ΄ν”„λΌμΈ]] - **Contradictions/Notes:** μ†ŒμŠ€ [33]μ—μ„œλŠ” `eslint-plugin-prettier` μ‚¬μš© μ‹œ 에디터에 밑쀄이 λ„ˆλ¬΄ 많이 생기고 느렀져 λ¬Έμ„œμ—μ„œλ„ μΆ”μ²œν•˜μ§€ μ•ŠλŠ”λ‹€λ©° 섀정을 μ‚­μ œν–ˆλ‹€κ³  μ–ΈκΈ‰ν•˜μ§€λ§Œ, μ†ŒμŠ€ [25]μ—μ„œλŠ” Prettier의 ν¬λ§€νŒ… 이슈λ₯Ό ESLint의 λ¦°ν„° 였λ₯˜λ‘œ λ„μ›Œ ν†΅ν•©μ μœΌλ‘œ 관리할 수 μžˆλŠ” 효과적인 방식이라고 μ„€λͺ…ν•˜λŠ” λ“± 개발자 λ˜λŠ” 쑰직 κ°„μ˜ `eslint-plugin-prettier` ν™œμš©μ— λŒ€ν•΄ μ—‡κ°ˆλ¦° 평가 및 μ„€μ • μ„ ν˜Έλ„ 차이가 μ‘΄μž¬ν•©λ‹ˆλ‹€. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/ESLint.md]] ---