--- id: P-REINFORCE-AUTO-F3FA69 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) ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •์€ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์ฝ”๋“œ ํ’ˆ์งˆ๊ณผ ์Šคํƒ€์ผ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ณ  ์ค‘๋ณต๋œ ์„ค์ •์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๊ณผ์ •์ž…๋‹ˆ๋‹ค. Turborepo์™€ ๊ฐ™์€ ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํŒจํ‚ค์ง€๊ฐ€ ํ˜ผ์žฌํ•˜๋ฏ€๋กœ ์ค‘์•™ ์ง‘์ค‘์‹ ESLint ๋ฐ Prettier ์„ค์ • ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [1, 2]. ์—ฌ๊ธฐ์— Husky์™€ lint-staged๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฆฐํŒ…(linting)๊ณผ ํฌ๋งทํŒ…(formatting)์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(orchestration)ํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ์ปค๋ฐ‹ ์†๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์˜ ๋ฌธ์ œ์ ** ์—ฌ๋Ÿฌ ๊ฐœ์˜ Next.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋œ ๋Œ€๊ทœ๋ชจ ๋ชจ๋…ธ๋ ˆํฌ์—์„œ๋Š” ๊ฐ ํŒจํ‚ค์ง€๋งˆ๋‹ค `.eslintrc.json` ๋ฐ `.eslintignore` ํŒŒ์ผ์ด ์ค‘๋ณต ์ƒ์„ฑ๋˜๊ณ  ๋ฆฐํŠธ ๊ทœ์น™์ด ์ผ๊ด€์„ฑ ์—†์ด ์ ์šฉ๋˜๋Š” ์œ ์ง€๋ณด์ˆ˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค [5, 6]. ํŠนํžˆ ๋ชจ๋…ธ๋ ˆํฌ ๋ฃจํŠธ์—์„œ `lint-staged`๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋งŒ ๊ฒ€์‚ฌํ•˜๋ ค ํ•  ๋•Œ, ๊ฐ ํŒจํ‚ค์ง€์˜ ๋…๋ฆฝ์ ์ธ ๋ฆฐํŒ… ๊ทœ์น™์„ ์กด์ค‘ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ฃผ์š”ํ•œ ํ•ด๊ฒฐ ๊ณผ์ œ์ž…๋‹ˆ๋‹ค [2]. * **์ค‘์•™ ์ง‘์ค‘์‹ ๊ตฌ์„ฑ(Centralised Config) ํŒจํ‚ค์ง€ ๊ตฌ์ถ•** * ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ ์ค‘๋ณต ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด `@repo/eslint-config`์™€ ๊ฐ™์€ ๋‚ด๋ถ€ ๊ณต์œ  ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ, ์ƒํ™ฉ์— ๋งž๊ฒŒ ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ฆฌ์…‹(base, next.js, library)์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค [2, 7]. * **Base Config**: ESLint 9์˜ ํ‰๋ฉด ๊ตฌ์„ฑ(flat config) ํฌ๋งท์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, TypeScript ์ง€์›, Prettier ํ†ตํ•ฉ(์ถฉ๋Œ ๊ทœ์น™ ๋น„ํ™œ์„ฑํ™”)์„ ๊ธฐ๋ณธ์œผ๋กœ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค [7]. * **Next.js Config / Library Config**: Next.js ์•ฑ์„ ์œ„ํ•œ React ์ „์šฉ ๋ฆฐํŒ… ๊ทœ์น™๊ณผ ๋น„ React ํŒจํ‚ค์ง€๋ฅผ ์œ„ํ•œ ๊ฐ€๋ฒผ์šด TypeScript ๊ทœ์น™์„ ๊ฐ๊ฐ ๋ถ„๋ฆฌํ•˜์—ฌ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค [8]. * **๋ฃจํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Root Orchestration) ๊ตฌ์„ฑ** * ๋ชจ๋…ธ๋ ˆํฌ ๋ฃจํŠธ์— `eslint.config.mjs`๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํŒŒ์ผ ํŒจํ„ด(glob pattern)์— ๋”ฐ๋ผ ๊ฐ ํŒจํ‚ค์ง€์— ์ ์ ˆํ•œ ๊ตฌ์„ฑ์„ ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค [9]. * ์ด ๋ฐฉ์‹์€ `lint-staged`๊ฐ€ ๋ชจ๋…ธ๋ ˆํฌ ๋ฃจํŠธ์—์„œ ์‹คํ–‰๋˜๋”๋ผ๋„ ํŒจํ‚ค์ง€ ๊ฒฝ๊ณ„๋ฅผ ์กด์ค‘ํ•˜์—ฌ ๊ฐ ํŒจํ‚ค์ง€๊ฐ€ ์ž์‹ ์—๊ฒŒ ๋งž๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ทœ์น™(์˜ˆ: Next.js์šฉ ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์šฉ)์„ ๋ถ€์—ฌ๋ฐ›๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค [9, 10]. * **Husky ๋ฐ lint-staged ์—ฐ๋™** * ๋ฃจํŠธ์˜ `package.json`๊ณผ `.husky/pre-commit` ํŒŒ์ผ์— `lint-staged`์™€ Husky๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ์ปค๋ฐ‹ ์‹œ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ๋งŒ ESLint์™€ Prettier๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค [3]. * ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ์ „์ฒด๋ฅผ ๋ฆฐํŠธํ•˜๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•  ๋•Œ ์ž๋™์œผ๋กœ ํฌ๋งทํŒ…๊ณผ ๋ฆฐํŠธ ์ˆ˜์ •์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 4]. * **Turborepo์™€์˜ ์บ์‹ฑ ํ†ตํ•ฉ ๋ฐ ๋„์ž… ํšจ๊ณผ** * `turbo.json`์— ESLint ๊ตฌ์„ฑ ํŒจํ‚ค์ง€๋ฅผ ์ „์—ญ ์ข…์†์„ฑ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฆฐํŠธ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹ฑํ•˜๊ณ  ์„ค์ • ๋ณ€๊ฒฝ ์‹œ ์ „์ฒด ์บ์‹œ๋ฅผ ๋ฌดํšจํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. * ์ด๋ฅผ ํ†ตํ•ด ํŒจํ‚ค์ง€ ์ˆ˜์ค€์˜ ์ค‘๋ณต ์„ค์ •์ด ํฌ๊ฒŒ ์ค„์–ด๋“ค๊ณ (Single source of truth ํ™•๋ณด), `lint-staged` ๋ฐ ์บ์‹ฑ์„ ํ†ตํ•œ ๋น ๋ฅธ ์ปค๋ฐ‹์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉฐ, ์ƒˆ๋กœ์šด ํŒจํ‚ค์ง€ ์ถ”๊ฐ€ ์‹œ ํ™•์žฅ์„ฑ๊ณผ ๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜(DX)์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค [4, 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:** ๋ชจ๋…ธ๋ ˆํฌ์—์„œ `lint-staged`์˜ ๊ณต์‹ ๊ถŒ์žฅ ์‚ฌํ•ญ์€ ๊ฐ ํŒจํ‚ค์ง€๋ณ„๋กœ ๋ณ„๋„์˜ ์„ค์ • ํŒŒ์ผ์„ ๋‘๊ณ  ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์ ์šฉ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ [12, 13], Turborepo๋ฅผ ํ™œ์šฉํ•˜๋Š” ํ˜„๋Œ€์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์—์„œ๋Š” ๋ฃจํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๊ตฌ์„ฑ ํŒŒ์ผ(`eslint.config.mjs`)์„ ํ†ตํ•ด ํŒŒ์ผ ํŒจํ„ด์„ ๊ฐ ํ”„๋ฆฌ์…‹์— ์ค‘์•™์—์„œ ๋งคํ•‘ํ•˜๋Š” ๋ฐฉ์‹์ด ๋” ํšจ์œจ์ ์ธ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ์ œ์‹œ๋ฉ๋‹ˆ๋‹ค [9, 10]. ๋˜ํ•œ, ESLint์™€ Prettier๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ํฌ๋งทํŒ… ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ `eslint-config-prettier`๋ฅผ ์„ค์ • ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ์œ„์น˜์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค [14]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/ํ”„๋ก ํŠธ์—”๋“œ ๋ฐ ๋ชจ๋…ธ๋ ˆํฌ(Monorepo) ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •.md ---