--- id: P-REINFORCE-AUTO-2C5A84 category: "[[10_Wiki/๐Ÿ’ก Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - React ๋ฐ Nextjs ๊ฐœ๋ฐœ ํ™˜๊ฒฝ" --- # [[React ๋ฐ Nextjs ๊ฐœ๋ฐœ ํ™˜๊ฒฝ]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > React ๋ฐ Next.js ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ๊ณผ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ •์  ๋ถ„์„ ๋„๊ตฌ์™€ ํฌ๋งทํ„ฐ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ์ƒํƒœ๊ณ„์ด๋‹ค [1, 2]. ์ฃผ๋กœ ESLint๋ฅผ ํ†ตํ•ด React ๋ฐ Next.js ํŠนํ™” ๋ฌธ๋ฒ•๊ณผ ๊ตฌ์กฐ์  ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ , Prettier๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ํ†ต์ผํ•œ๋‹ค [3, 4]. ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Turborepo์™€ ๊ฐ™์€ ๋ชจ๋…ธ๋ ˆํฌ ๋„๊ตฌ์™€ Husky, lint-staged๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ณ  ํšจ์œจ์ ์ธ ๋ฆฐํŒ… ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•œ๋‹ค [5-7]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **React ๋ฐ Next.js ํŠนํ™” ESLint ์„ค์ •:** React ์ปดํฌ๋„ŒํŠธ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด์„œ๋Š” ์ปดํฌ๋„ŒํŠธ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ํ›…(Hooks) ๊ทœ์น™, JSX ์ ‘๊ทผ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ง€์›ํ•˜๋Š” `eslint-plugin-react`, `eslint-plugin-react-hooks`, `eslint-plugin-jsx-a11y` ๋“ฑ์˜ ์ „์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค [8-10]. Next.js ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ `eslint-config-next` ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”์–ด ์›น ๋ฐ”์ดํƒˆ(core web vitals) ๋ฐ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ ํŒจํ„ด๊ณผ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ ํŠนํ™” ๊ทœ์น™์„ ์†์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค [4, 11]. * **JSX ๋ณ€ํ™˜(Transform) ๊ทœ์น™ ์ฒ˜๋ฆฌ:** ์ตœ์‹  JSX ๋ณ€ํ™˜์„ ์ง€์›ํ•˜๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ํŒŒ์ผ ๋‚ด์— React ๊ฐ์ฒด๋ฅผ ์ง์ ‘ importํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฏ€๋กœ, ESLint์—์„œ ๋ฐœ์ƒํ•˜๋Š” `'React' must be in scope when using JSX` ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด `'react/react-in-jsx-scope': 'off'` ๊ทœ์น™์„ ์ถ”๊ฐ€๋กœ ์„ค์ •ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๊ฒฝ๊ณ ๋ฅผ ์—†์•จ ์ˆ˜ ์žˆ๋‹ค [4, 12, 13]. * **ํฌ๋งทํ„ฐ(Prettier)์™€์˜ ์ถฉ๋Œ ์ œ์–ด:** ESLint์˜ ์Šคํƒ€์ผ ๊ทœ์น™๊ณผ Prettier์˜ ํฌ๋งทํŒ… ๊ทœ์น™์ด ์ถฉ๋Œํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด `eslint-config-prettier` ํŒจํ‚ค์ง€๋ฅผ ๋„์ž…ํ•˜์—ฌ ํฌ๋งทํŒ…๊ณผ ์ค‘๋ณต๋˜๊ฑฐ๋‚˜ ์ถฉ๋Œํ•˜๋Š” ESLint ์ธก์˜ ๊ทœ์น™๋“ค์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•œ๋‹ค [14-16]. * **๋ชจ๋…ธ๋ ˆํฌ(Turborepo) ํ™˜๊ฒฝ์—์„œ์˜ ๊ตฌ์„ฑ:** ์—ฌ๋Ÿฌ ๊ฐœ์˜ Next.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ณต์กดํ•˜๋Š” Turborepo ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ์˜ ๋ฌด๋ถ„๋ณ„ํ•œ ์ค‘๋ณต์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์ค‘์•™ ์ง‘์ค‘์‹ ESLint ์„ค์ • ํŒจํ‚ค์ง€(์˜ˆ: `@repo/eslint-config`)๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ํšจ๊ณผ์ ์ด๋‹ค [5, 17]. Base, Next.js, Library์šฉ ํ”„๋ฆฌ์…‹์„ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ๊ตฌ์„ฑํ•˜๊ณ , ๋ฃจํŠธ ๋ ˆ๋ฒจ์˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(orchestration) ์„ค์ •์„ ํ†ตํ•ด ํŒŒ์ผ ํŒจํ„ด๋ณ„๋กœ ๊ฐ ํŒจํ‚ค์ง€์— ๋งž๋Š” ์ ์ ˆํ•œ ๊ทœ์น™์ด ์ ์šฉ๋˜๋„๋ก ์ œ์–ดํ•œ๋‹ค [4, 17, 18]. * **Git Hooks๋ฅผ ํ†ตํ•œ ์ž๋™ํ™” (Husky & lint-staged):** ์ฝ”๋“œ ์ €์žฅ์†Œ์— ํ‘ธ์‹œ๋˜๊ฑฐ๋‚˜ ์ปค๋ฐ‹๋˜๊ธฐ ์ „์— React ๋ฐ Next.js ์ฝ”๋“œ ์ปจ๋ฒค์…˜์ด ๊ฐ•์ œ๋˜๋„๋ก `Husky`๋ฅผ ํ™œ์šฉํ•˜์—ฌ Git ํ›…(pre-commit ๋“ฑ)์„ ์„ค์ •ํ•œ๋‹ค [19-21]. ์—ฌ๊ธฐ์— `lint-staged`๋ฅผ ๊ฒฐํ•ฉํ•˜๋ฉด ๋ณ€๊ฒฝ๋˜์–ด ์Šคํ…Œ์ด์ง•๋œ ํŒŒ์ผ๋“ค์—๋งŒ ํ•œ์ •ํ•˜์—ฌ ESLint์™€ Prettier๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ, ๋ฐฉ๋Œ€ํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ๋„ 1~2์ดˆ ๋งŒ์— ๊ฒ€์‚ฌ๋ฅผ ์™„๋ฃŒํ•˜์—ฌ ๊ฐœ๋ฐœ ํ๋ฆ„์˜ ์ง€์—ฐ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค [6, 22]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[ESLint]], [[Prettier]], [[Turborepo]], [[Husky ๋ฐ lint-staged]] - **Projects/Contexts:** [[Next.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ๋ชจ๋…ธ๋ ˆํฌ ๊ตฌ์ถ•]], [[React ์ปดํฌ๋„ŒํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ]] - **Contradictions/Notes:** ESLint์™€ Prettier๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ `eslint-plugin-prettier`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Prettier ๊ทœ์น™์„ ESLint ๋‚ด์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด ์กด์žฌํ•˜๋‚˜, ์—๋””ํ„ฐ์ƒ์— ์˜ค๋ฅ˜ ๋ฐ‘์ค„์ด ๊ณผ๋„ํ•˜๊ฒŒ ํ‘œ์‹œ๋˜๊ฑฐ๋‚˜ ๋‹จ๋… ์‹คํ–‰๋ณด๋‹ค ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋А๋ ค์ง€๋Š” ๋‹จ์ ์ด ์žˆ์–ด Prettier ๊ณต์‹ ๋ฌธ์„œ ๋ฐ ์ผ๋ถ€ ์‹ค๋ฌด ํ™˜๊ฒฝ์—์„œ๋Š” ์ด๋ฅผ ์ง€์–‘ํ•˜๊ณ  `eslint-config-prettier`๋งŒ ์ ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ธฐ๋„ ํ•œ๋‹ค [12, 23]. --- *Last updated: 2026-04-19* - Raw Source: [[00_Raw/2026-04-20/React ๋ฐ Next.js ๊ฐœ๋ฐœ ํ™˜๊ฒฝ.md]] ---