--- 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* ---