--- id: [[P-Reinforce|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 แ„’แ…ชแ†ซแ„€แ…งแ†ผ แ„€แ…ฎแ„‰แ…ฅแ†ผ|Turborepo ํ™˜๊ฒฝ ๊ตฌ์„ฑ]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Turborepo ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์—์„œ [[ESLint|ESLint]], Prettier, [[lint-staged|lint-staged]]๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค [1]. ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€์— ๋ถ„์‚ฐ๋œ ์ค‘๋ณต ์„ค์ •๊ณผ ๊ทœ์น™์˜ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค [1, 2]. ์ค‘์•™ ์ง‘์ค‘์‹ ์„ค์ • ํŒจํ‚ค์ง€์™€ ๋ฃจํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Root Orchestration)์„ ๊ฒฐํ•ฉํ•˜์—ฌ, ๊ฐ ํŒจํ‚ค์ง€์˜ ๊ทœ์น™์„ ์กด์ค‘ํ•˜๋ฉด์„œ๋„ ๋น ๋ฅด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฆฐํŒ… ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [3, 4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **์ค‘์•™ ์ง‘์ค‘์‹ ๊ตฌ์„ฑ ํŒจํ‚ค์ง€ ๊ตฌ์ถ•:** ๋ชจ๋…ธ๋ ˆํฌ ๋‚ด์— ๋ณ„๋„์˜ ์„ค์ • ํŒจํ‚ค์ง€(์˜ˆ: `@repo/eslint-config`)๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Base, [[Next.js|Next.js]], Library์šฉ์œผ๋กœ ์กฐํ•ฉ ๊ฐ€๋Šฅํ•œ ํ”„๋ฆฌ์…‹(preset) ์„ค์ •์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [5, 6]. ์ด ํŒจํ‚ค์ง€๋Š” ESLint 9์˜ ํ‰๋ฉด ๊ตฌ์„ฑ(flat config) ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ „์ฒด ๋ชจ๋…ธ๋ ˆํฌ์˜ ๋ฆฐํŒ… ๊ทœ์น™์„ ์ œ์–ดํ•˜๋Š” ๋‹จ์ผ ์ง„์‹ค ๊ณต๊ธ‰์›([[Single_Source_of_Truth|Single Source of Truth]]) ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [5, 7]. - **ํŒจํ‚ค์ง€๋ณ„ ์ž์œจ์„ฑ ๋ณด์žฅ:** ๊ฐœ๋ณ„ ํŒจํ‚ค์ง€์—๋Š” ์ตœ์†Œํ•œ์˜ `eslint.config.mjs` ํŒŒ์ผ๋งŒ ๋‚จ๊ฒจ๋‘๊ณ  ์ค‘์•™ ํŒจํ‚ค์ง€์˜ ํ”„๋ฆฌ์…‹์„ ์ž„ํฌํŠธํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [7]. ์ด๋ฅผ ํ†ตํ•ด ์ „์ฒด ์ฝ”์–ด ๊ทœ์น™์„ ์ผ๊ด€๋˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋ฉด์„œ๋„, ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํŠน์ • ํŒจํ‚ค์ง€์—์„œ ๊ฐœ๋ณ„์ ์ธ ๊ทœ์น™ ์˜ค๋ฒ„๋ผ์ด๋“œ(override)๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž์œจ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 8]. - **๋ฃจํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ (Root Orchestration):** ๋ชจ๋…ธ๋ ˆํฌ ๋ฃจํŠธ์— ์œ„์น˜ํ•œ `eslint.config.mjs`์—์„œ ํŒŒ์ผ ํŒจํ„ด(glob ํŒจํ„ด)์„ ํ™œ์šฉํ•ด ๊ฐ ํŒจํ‚ค์ง€๋ฅผ ์ ์ ˆํ•œ ์„ค์ •์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค [9]. ์ด๋Š” `lint-staged`์™€ [[Husky|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, 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* ---