1.0.10 β€’ Published 5 months ago

@choi2021/next-route-visualizer v1.0.10

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

πŸ—ΊοΈ Next.js Route Visualizer

Next.js ν”„λ‘œμ νŠΈμ˜ 라우트 ꡬ쑰와 λ„€λΉ„κ²Œμ΄μ…˜μ„ ν•œ λˆˆμ— μ‹œκ°ν™”ν•΄λ³΄μ„Έμš”!

ν•œ 번의 λͺ…λ Ήμ–΄λ‘œ 라우트 κ·Έλž˜ν”„ JSONκ³Ό μΈν„°λž™ν‹°λΈŒ HTML 리포트λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

✨ νŠΉμ§•

  • πŸš€ 원클릭 μ‹€ν–‰: npx λͺ…λ Ήμ–΄ ν•˜λ‚˜λ‘œ μ¦‰μ‹œ μ‹œκ°ν™”
  • πŸ“Š 라우트 뢄석: νŽ˜μ΄μ§€μ™€ 닀이내믹 라우트 관계 좔적
  • 🎯 동적 ν•¨μˆ˜ 뢄석: Router.push(getRoute())와 같은 동적 ν•¨μˆ˜ 호좜 λ‚΄λΆ€ 뢄석
  • πŸ” κ³ κΈ‰ λ„€λΉ„κ²Œμ΄μ…˜ 감지: Routes μƒμˆ˜, ν™”μ‚΄ν‘œ ν•¨μˆ˜, 쑰건뢀 λ„€λΉ„κ²Œμ΄μ…˜ 지원
  • 🎨 두 κ°€μ§€ μ‹œκ°ν™” λͺ¨λ“œ:
    • πŸ“ˆ κ·Έλž˜ν”„ λ‹€μ΄μ–΄κ·Έλž¨: λ“œλž˜κ·Έ, 쀌, 필터링 κ°€λŠ₯ν•œ λ…Έλ“œ-링크 μ‹œκ°ν™”
    • πŸ“‹ μΈν„°λž™ν‹°λΈŒ 리포트: νŽ˜μ΄μ§€ μ„ νƒν˜• μ—°κ²° 탐색 μΈν„°νŽ˜μ΄μŠ€
  • πŸ’Ύ JSON 좜λ ₯: λ‹€λ₯Έ λ„κ΅¬μ—μ„œλ„ ν™œμš© κ°€λŠ₯ν•œ 데이터
  • 🌐 μžλ™ λΈŒλΌμš°μ €: 생성 μ¦‰μ‹œ λΈŒλΌμš°μ €μ—μ„œ μ—΄λ¦Ό

πŸš€ λΉ λ₯Έ μ‹œμž‘

Next.js ν”„λ‘œμ νŠΈμ—μ„œ λ°”λ‘œ μ‹€ν–‰

# ν˜„μž¬ 디렉터리 뢄석 (κΈ°λ³Έ: κ·Έλž˜ν”„ λ‹€μ΄μ–΄κ·Έλž¨)
npx @choi2021/next-route-visualizer

# μΈν„°λž™ν‹°λΈŒ HTML 리포트 생성
npx @choi2021/next-route-visualizer report

# νŠΉμ • ν”„λ‘œμ νŠΈ 뢄석
npx @choi2021/next-route-visualizer ./my-next-app
npx @choi2021/next-route-visualizer report ./my-next-app

λͺ…λ Ήμ–΄ μ˜΅μ…˜

# κΈ°λ³Έ κ·Έλž˜ν”„ μ‹œκ°ν™”
npx @choi2021/next-route-visualizer map [project-path]

# μΈν„°λž™ν‹°λΈŒ HTML 리포트
npx @choi2021/next-route-visualizer report [project-path] [-o output.html]

κ²°κ³Ό

κ·Έλž˜ν”„ μ‹œκ°ν™” (map λͺ…λ Ήμ–΄):

  • route-graph.json - 라우트 데이터
  • route-visualizer.html - λ…Έλ“œ-링크 κ·Έλž˜ν”„ μ‹œκ°ν™”

HTML 리포트 (report λͺ…λ Ήμ–΄):

  • route-graph.json - 라우트 데이터
  • route-report.html - νŽ˜μ΄μ§€ μ„ νƒν˜• μΈν„°λž™ν‹°λΈŒ 리포트

πŸ“‹ μ‹œμŠ€ν…œ μš”κ΅¬μ‚¬ν•­

  • Node.js 14.0.0 이상
  • Next.js ν”„λ‘œμ νŠΈ (pages/ λ˜λŠ” src/pages/ ꡬ쑰)

πŸ’‘ μ‚¬μš© μ˜ˆμ‹œ

$ npx @choi2021/next-route-visualizer report

πŸ“Š Next.js Route HTML Report Generator v1.0.0

πŸ”„ 라우트 뢄석 쀑...
πŸ“Š HTML 리포트 생성 쀑...

βœ… HTML λ¦¬ν¬νŠΈκ°€ μƒμ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€: route-report.html
πŸ“Š 총 9개 νŽ˜μ΄μ§€, 139개 μ—°κ²° 뢄석 μ™„λ£Œ

🌐 λΈŒλΌμš°μ €μ—μ„œ 리포트λ₯Ό μ—΄μ—ˆμŠ΅λ‹ˆλ‹€!

🎨 μ‹œκ°ν™” λͺ¨λ“œ

1. πŸ“ˆ κ·Έλž˜ν”„ λ‹€μ΄μ–΄κ·Έλž¨ (map)

  • 컬러 μ½”λ”©: νŽ˜μ΄μ§€(νŒŒλž€μƒ‰), 닀이내믹 라우트(주황색)
  • μΈν„°λž™ν‹°λΈŒ κ·Έλž˜ν”„: λ…Έλ“œ λ“œλž˜κ·Έ, 쀌 인/아웃, 팬
  • μ„ΈλΆ€ 정보: ν˜Έλ²„μ‹œ 파일 경둜, μ½”λ“œ μŠ€λ‹ˆνŽ«, 라인 번호 ν‘œμ‹œ
  • μ—°κ²° 좔적: νŽ˜μ΄μ§€κ°„ λ„€λΉ„κ²Œμ΄μ…˜ 관계 μ‹œκ°ν™”

2. πŸ“‹ μΈν„°λž™ν‹°λΈŒ 리포트 (report)

  • μ‚¬μ΄λ“œλ°”: μ—°κ²° 수 κΈ°μ€€ μ •λ ¬λœ νŽ˜μ΄μ§€ λͺ©λ‘
  • νŽ˜μ΄μ§€ 상세: μ„ νƒλœ νŽ˜μ΄μ§€μ˜ incoming/outgoing μ—°κ²° ν‘œμ‹œ
  • ν”„λ‘œμ νŠΈ 톡계: 전체 νŽ˜μ΄μ§€, μ—°κ²° 수, 평균 μ—°κ²° 수
  • 검색 κΈ°λŠ₯: νŽ˜μ΄μ§€ 경둜 μ‹€μ‹œκ°„ 검색
  • 클릭 λ„€λΉ„κ²Œμ΄μ…˜: μ—°κ²°λœ νŽ˜μ΄μ§€ κ°„ μ‰¬μš΄ 이동

πŸ“Š 좜λ ₯ 데이터 ꡬ쑰

route-graph.json의 ꡬ쑰:

{
  "nodes": [
    {
      "id": "/",
      "path": "/",
      "type": "page",
      "filePath": "pages/index.tsx",
      "fileSize": 2203,
      "metadata": { "depth": 0, "segments": [""] }
    }
  ],
  "edges": [
    {
      "source": "/",
      "target": "/about",
      "method": "link",
      "lineNumber": 25,
      "codeSnippet": "<Link href='/about'>",
      "fileName": "pages/index.tsx"
    }
  ],
  "summary": {
    "totalPages": 9,
    "totalConnections": 139,
    "avgConnections": 15.4
  }
}

πŸ” μ—°κ²° 뢄석 νƒ€μž…

  • link: Next.js Link μ»΄ν¬λ„ŒνŠΈ
  • router: router.push(), router.replace() λ“±
  • component: μ»΄ν¬λ„ŒνŠΈλ₯Ό ν†΅ν•œ κ°„μ ‘ λ„€λΉ„κ²Œμ΄μ…˜

πŸ› οΈ 개발 및 디버깅

둜컬 개발

git clone https://github.com/your-username/next-route-map.git
cd next-route-map
npm install
npm run build

# 예제 ν”„λ‘œμ νŠΈ ν…ŒμŠ€νŠΈ
npm run test:example

# HTML 리포트 ν…ŒμŠ€νŠΈ
npm run test:report

🀝 κΈ°μ—¬ν•˜κΈ°

버그 λ¦¬ν¬νŠΈμ™€ κΈ°λŠ₯ μ œμ•ˆμ€ GitHub Issuesμ—μ„œ ν™˜μ˜ν•©λ‹ˆλ‹€.

πŸ“„ λΌμ΄μ„ μŠ€

MIT License


⭐ ν”„λ‘œμ νŠΈκ°€ μœ μš©ν•˜λ‹€λ©΄ GitHubμ—μ„œ λ³„ν‘œλ₯Ό λˆŒλŸ¬μ£Όμ„Έμš”!

🎯 κ³ κΈ‰ 뢄석 κΈ°λŠ₯ (v1.1.0)

동적 ν•¨μˆ˜ 뢄석

이제 λ‹€μŒκ³Ό 같은 λ³΅μž‘ν•œ λ„€λΉ„κ²Œμ΄μ…˜ νŒ¨ν„΄λ„ μ •ν™•νžˆ λΆ„μ„ν•©λ‹ˆλ‹€:

// 1. 쑰건뢀 동적 ν•¨μˆ˜ (βœ… λͺ¨λ“  κ°€λŠ₯ν•œ 경둜 감지)
const getRoute = () => {
  if (condition) {
    return V2_Routes.ADMIN_PANEL(); // β†’ /v2/admin/panel
  } else {
    return Routes.PROFILE(); // β†’ /profile
  }
};

const handleClick = () => {
  Router.push(getRoute()); // 두 경둜 λͺ¨λ‘ μ‹œκ°ν™”λ¨!
};

// 2. ν™”μ‚΄ν‘œ ν•¨μˆ˜ Routes μƒμˆ˜ (βœ… 지원)
export const V2_Routes = {
  ADMIN_PANEL: () => "/v2/admin/panel",
  USER_PROFILE: (id) => `/v2/user/${id}`,
};

// 3. getServerSideProps λ¦¬λ””λ ‰μ…˜ (βœ… 지원)
export async function getServerSideProps() {
  if (!authenticated) {
    return { redirect: { destination: "/login" } };
  }
}

// 4. λŒ€μ†Œλ¬Έμž ꡬ뢄 (βœ… λͺ¨λ‘ 감지)
Router.push(Routes.HOME()); // λŒ€λ¬Έμž Router
router.push(Routes.PROFILE()); // μ†Œλ¬Έμž router

μ§€μ›ν•˜λŠ” λ„€λΉ„κ²Œμ΄μ…˜ νŒ¨ν„΄

  • βœ… 정적 경둜: "/dashboard", '/profile'
  • βœ… Routes μƒμˆ˜: Routes.HOME, ROUTES.DASHBOARD
  • βœ… ν•¨μˆ˜ν˜• Routes: Routes.PROFILE(), V2_Routes.ADMIN()
  • βœ… 동적 ν•¨μˆ˜ 호좜: Router.push(getRoute())
  • βœ… 쑰건뢀 리턴: if/else 블둝 λ‚΄ λ„€λΉ„κ²Œμ΄μ…˜
  • βœ… ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄: `/dashboard?tab=${tab}`
  • βœ… getServerSideProps λ¦¬λ””λ ‰μ…˜
  • βœ… useEffect λ‚΄ λ„€λΉ„κ²Œμ΄μ…˜
  • βœ… ν›… 기반 λ„€λΉ„κ²Œμ΄μ…˜
1.0.10

5 months ago

1.0.9

5 months ago

1.0.8

5 months ago

1.0.7

5 months ago

1.0.6

5 months ago

1.0.5

5 months ago

1.0.4

5 months ago

1.0.2

5 months ago

1.0.1

5 months ago

1.0.0

5 months ago