πŸ“¦ Barrel Export 정리 (React / TypeScript)

1️⃣ Barrel Exportλž€?

Barrel ExportλŠ” μ—¬λŸ¬ νŒŒμΌμ—μ„œ exportν•œ 것듀을 πŸ‘‰ ν•˜λ‚˜μ˜ 파일(index.ts)μ—μ„œ λͺ¨μ•„μ„œ λ‹€μ‹œ exportν•˜λŠ” 방식이닀.

μ‰½κ²Œ λ§ν•˜λ©΄ πŸ‘‰ β€œexport λͺ¨μ•„μ£ΌλŠ” 쀑간 μ§‘ν•©μ†Œβ€


2️⃣ μ™œ μ“°λŠ”κ°€?

κΈ°μ‘΄ 방식:

import Button from '@/components/common/button/Button'
import Input from '@/components/common/input/Input'
import Modal from '@/components/common/modal/Modal'

πŸ‘‰ κ²½λ‘œκ°€ κΈΈκ³  지저뢄함


Barrel Export μ‚¬μš©:

import { Button, Input, Modal } from '@/components/common'

πŸ‘‰ κΉ”λ”ν•˜κ³  μœ μ§€λ³΄μˆ˜ 쉬움


3️⃣ κΈ°λ³Έ ꡬ쑰

components/
└─ common/
   β”œβ”€ button/
   β”‚  β”œβ”€ Button.tsx
   β”‚  └─ index.ts
   β”œβ”€ input/
   β”‚  β”œβ”€ Input.tsx
   β”‚  └─ index.ts
   β”œβ”€ modal/
   β”‚  β”œβ”€ Modal.tsx
   β”‚  └─ index.ts
   └─ index.ts   ⭐ (Barrel)

4️⃣ μž‘μ„± 방법

(1) 각 μ»΄ν¬λ„ŒνŠΈ 폴더

// button/index.ts
export { default as Button } from './Button'
// input/index.ts
export { default as Input } from './Input'

(2) μ΅œμƒμœ„ Barrel

// common/index.ts
export * from './button'
export * from './input'
export * from './modal'

5️⃣ export 방식 이해

export default

export default Button

πŸ‘‰ κΈ°λ³Έ export (이름 자유)


export named

export const Button = () => {}

πŸ‘‰ 이름 κ³ μ •


Barrelμ—μ„œ 자주 μ“°λŠ” 방식

export { default as Button } from './Button'

πŸ‘‰ defaultλ₯Ό named둜 λ°”κΏ”μ„œ 재export


6️⃣ μž₯점

βœ… 1. import 경둜 λ‹¨μˆœν™”

import { Button } from '@/components/common'

βœ… 2. ꡬ쑰 μˆ¨κΉ€ (μΊ‘μŠν™”)

πŸ‘‰ λ‚΄λΆ€ 폴더 ꡬ쑰 λ°”λ€Œμ–΄λ„ 영ν–₯ μ—†μŒ


βœ… 3. μœ μ§€λ³΄μˆ˜ 쉬움

πŸ‘‰ export 관리 ν•œ κ³³μ—μ„œ κ°€λŠ₯


βœ… 4. ν˜‘μ—…μ— 유리

πŸ‘‰ νŒ€μ›λ“€μ΄ import κ·œμΉ™ 톡일 κ°€λŠ₯


7️⃣ 단점 (μ€‘μš”)

❗ 1. λ„ˆλ¬΄ 많이 μ“°λ©΄ 가독성 떨어짐

πŸ‘‰ μ–΄λ””μ„œ 온 건지 ν—·κ°ˆλ¦Ό


❗ 2. μˆœν™˜ μ°Έμ‘° μœ„ν—˜

πŸ‘‰ index끼리 importν•˜λ©΄ 문제 λ°œμƒ


❗ 3. 트리 쉐이킹 영ν–₯ κ°€λŠ₯

πŸ‘‰ ν•„μš” μ—†λŠ” μ½”λ“œκΉŒμ§€ 묢일 수 있음


8️⃣ μ–Έμ œ μ“°λŠ” 게 쒋냐

πŸ‘‰ 이런 κ²½μš°μ— κ°•λ ₯ μΆ”μ²œ

  • 곡톡 μ»΄ν¬λ„ŒνŠΈ (Button, Input, Modal)
  • UI 라이브러리 ꡬ쑰
  • λ””μžμΈ μ‹œμŠ€ν…œ

πŸ‘‰ 이런 κ²½μš°λŠ” λΉ„μΆ”μ²œ

  • λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 폴더
  • λ„ˆλ¬΄ κΉŠμ€ ꡬ쑰
  • μž‘μ€ ν”„λ‘œμ νŠΈ

9️⃣ 싀무 팁

πŸ‘‰ 보톡 μ΄λ ‡κ²Œ κ·œμΉ™ 작음

  • components/common β†’ Barrel μ‚¬μš©
  • features/xxx β†’ ν•„μš”ν•  λ•Œλ§Œ μ‚¬μš©

πŸ‘‰ 파일 넀이밍 κ·œμΉ™

index.ts  // Barrel μ „μš©

🧠 핡심 정리

  • Barrel Export = export λͺ¨μ•„μ£ΌλŠ” 파일
  • import 경둜λ₯Ό λ‹¨μˆœν•˜κ²Œ λ§Œλ“€μ–΄μ€Œ
  • 곡톡 μ»΄ν¬λ„ŒνŠΈμ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λ¨
  • κ³Όν•˜κ²Œ μ“°λ©΄ 였히렀 λ³΅μž‘ν•΄μ§ˆ 수 있음

πŸ”₯ ν•œ 쀄 μš”μ•½

πŸ‘‰ β€œμ—¬λŸ¬ exportλ₯Ό ν•˜λ‚˜μ˜ε…₯口둜 λͺ¨μ•„μ„œ importλ₯Ό κΉ”λ”ν•˜κ²Œ λ§Œλ“œλŠ” νŒ¨ν„΄β€

results matching ""

    No results matching ""