--- id: [[P-Reinforce|P-Reinforce]]-AUTO-BDDA30 category: Unified confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ESLint" --- # [[ESLint|ESLint]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ESLint๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์—์„œ ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜์™€ ์ž ์žฌ์  ๋ฒ„๊ทธ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์„ ๊ฐ•์ œํ•˜๋Š” ์ •์  ๋ถ„์„ ๋„๊ตฌ(Linter)์ž…๋‹ˆ๋‹ค [1, 2]. ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(AST)๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‚ฌ์ „์— ์ •์˜๋œ ๋…ผ๋ฆฌ ๋ฐ ์Šคํƒ€์ผ ๊ทœ์น™์„ ์ ์šฉํ•จ์œผ๋กœ์จ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค [3, 4]. ์ฃผ๋กœ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋ณด์žฅํ•˜๊ณ  ํŒ€ ๋‚ด ์ผ๊ด€๋œ ์Šคํƒ€์ผ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ์ฝ”๋“œ ํฌ๋งคํŒ… ๋„๊ตฌ์ธ [[Prettier|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|eslint-config-prettier]]` ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Prettier์™€ ์ถฉ๋Œํ•˜๋Š” ESLint์˜ ์Šคํƒ€์ผ ๊ทœ์น™์„ ๋น„ํ™œ์„ฑํ™”(off)ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๊ฐ€์žฅ ๋„๋ฆฌ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [21, 23-25]. * **์›Œํฌํ”Œ๋กœ์šฐ ๋ฐ ์ž๋™ํ™” ์—ฐ๋™** ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด Git ์ €์žฅ์†Œ์— ๋ฐ˜์˜๋˜๊ธฐ ์ „, ๋‚˜์œ ์ฝ”๋“œ๊ฐ€ ์ปค๋ฐ‹๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [26, 27]. ์ฃผ๋กœ `[[Husky|Husky]]`์™€ `lint-staged` ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ, Git์˜ `pre-commit` ํ›…(hook) ๋‹จ๊ณ„์—์„œ ๋ณ€๊ฒฝ๋œ(staged) ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ๋งŒ ESLint ๊ฒ€์‚ฌ ๋ฐ ์ž๋™ ์ˆ˜์ •์„ ์‹คํ–‰ํ•˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [11, 28-30]. ๋Œ€๊ทœ๋ชจ ๋ชจ๋…ธ๋ ˆํฌ([[Monorepo|Monorepo]]) ํ™˜๊ฒฝ์—์„œ๋Š” ์ค‘๋ณต ๊ตฌ์„ฑ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์•™์ง‘์ค‘์‹ ESLint ์„ค์ • ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ ํ•˜์œ„ ํŒจํ‚ค์ง€๊ฐ€ ์ด๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค [15, 31, 32]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Prettier|Prettier]], Husky, lint-staged, [[แ„Œแ…ฅแ†ผแ„Œแ…ฅแ†จ แ„‡แ…ฎแ†ซแ„‰แ…ฅแ†จ(Static Analysis)|์ •์  ๋ถ„์„(Static Analysis]], [[AST(Abstract Syntax Tree)|AST(Abstract Syntax Tree]] - **Projects/Contexts:** [[แ„†แ…ฉแ„‚แ…ฉแ„…แ…ฆแ„‘แ…ฉ(Monorepo) แ„€แ…ตแ„‡แ…กแ†ซ แ„€แ…ฎแ„‰แ…ฅแ†ผ แ„Œแ…ฎแ†ผแ„‹แ…กแ†ผแ„’แ…ช|๋ชจ๋…ธ๋ ˆํฌ(Monorepo) ๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ ์ค‘์•™ํ™”]], Git Hook์„ ์ด์šฉํ•œ CI/CD ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ - **Contradictions/Notes:** ์†Œ์Šค [33]์—์„œ๋Š” `[[eslint-plugin-prettier|eslint-plugin-prettier]]` ์‚ฌ์šฉ ์‹œ ์—๋””ํ„ฐ์— ๋ฐ‘์ค„์ด ๋„ˆ๋ฌด ๋งŽ์ด ์ƒ๊ธฐ๊ณ  ๋А๋ ค์ ธ ๋ฌธ์„œ์—์„œ๋„ ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉฐ ์„ค์ •์„ ์‚ญ์ œํ–ˆ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•˜์ง€๋งŒ, ์†Œ์Šค [25]์—์„œ๋Š” Prettier์˜ ํฌ๋งคํŒ… ์ด์Šˆ๋ฅผ ESLint์˜ ๋ฆฐํ„ฐ ์˜ค๋ฅ˜๋กœ ๋„์›Œ ํ†ตํ•ฉ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํšจ๊ณผ์ ์ธ ๋ฐฉ์‹์ด๋ผ๊ณ  ์„ค๋ช…ํ•˜๋Š” ๋“ฑ ๊ฐœ๋ฐœ์ž ๋˜๋Š” ์กฐ์ง ๊ฐ„์˜ `eslint-plugin-prettier` ํ™œ์šฉ์— ๋Œ€ํ•ด ์—‡๊ฐˆ๋ฆฐ ํ‰๊ฐ€ ๋ฐ ์„ค์ • ์„ ํ˜ธ๋„ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. --- *Last updated: 2026-04-18* ---