choi2021
v1.0.0
Published
πΊοΈ Visualize Next.js routes as an interactive diagram. Automatically parse route structures and navigation relationships in your Next.js project.
Maintainers
Readme
πΊοΈ Next.js Route Map
Next.js νλ‘μ νΈμ λΌμ°νΈ ꡬ쑰λ₯Ό μΈν°λν°λΈν μκ°μ λ€μ΄μ΄κ·Έλ¨μΌλ‘ λ³ννλ CLI λꡬ
β¨ νΉμ§
- π κ°λ¨ν μ¬μ©λ²: ν μ€ λͺ λ Ήμ΄λ‘ λΌμ°νΈ λ§΅ μμ±
- π¨ μΈν°λν°λΈ μκ°ν: Cytoscape.js κΈ°λ°μ λμ κ·Έλν
- π± λͺ¨λ λΌμ°νΈ νμ μ§μ: νμ΄μ§, API, λμ λΌμ°νΈ λͺ¨λ κ°μ§
- π λ€λΉκ²μ΄μ
μΆμ :
router.push(),Linkμ»΄ν¬λνΈ μ°κ²° κ΄κ³ λΆμ - π λ¨μΌ HTML νμΌ: μλ² μμ΄ λΈλΌμ°μ μμ λ°λ‘ μ€ν
- π― μ λ‘ μ€μ : λ³λ μ€μ μμ΄ μ¦μ μ¬μ© κ°λ₯
π λΉ λ₯Έ μμ
npxλ‘ μ¦μ μ¬μ© (κΆμ₯)
npx next-route-map map --path ./your-nextjs-projectκΈλ‘λ² μ€μΉ
npm install -g next-route-map
next-route-map map --path ./your-nextjs-projectπ μ¬μ©λ²
κΈ°λ³Έ μ¬μ©λ²
# νμ¬ λλ ν 리μ Next.js νλ‘μ νΈ λΆμ
npx next-route-map map
# νΉμ κ²½λ‘μ νλ‘μ νΈ λΆμ
npx next-route-map map --path ./my-next-app
# λμλ§ λ³΄κΈ°
npx next-route-map --helpλͺ λ Ήμ΄ μ΅μ
next-route-map map [options]
Options:
-p, --path <path> Next.js νλ‘μ νΈ κ²½λ‘ (κΈ°λ³Έκ°: ".")
-h, --help λμλ§ νμπ¨ μμ±λλ μκ°ν
λꡬλ₯Ό μ€ννλ©΄ route-visualizer.html νμΌμ΄ μμ±λλ©°, λ€μκ³Ό κ°μ κΈ°λ₯μ μ 곡ν©λλ€:
π λ Έλ νμ λ³ μμ ꡬλΆ
- π’ μΌλ° νμ΄μ§: μ΄λ‘μ (μ:
/about,/contact) - π΅ λμ λΌμ°νΈ: νλμ (μ:
/user/[id],/blog/[...slug]) - π API λΌμ°νΈ: μ£Όν©μ (μ:
/api/users,/api/auth)
π μ°κ²° κ΄κ³ νμ
- νλμ νμ΄ν:
router.push()λ€λΉκ²μ΄μ - λΉ¨κ°μ νμ΄ν:
router.replace()λ€λΉκ²μ΄μ - μ΄λ‘μ νμ΄ν:
<Link>μ»΄ν¬λνΈ μ°κ²°
π±οΈ μΈν°λν°λΈ κΈ°λ₯
- μ€/ν¬: λ§μ°μ€ ν κ³Ό λλκ·Έλ‘ νλ/μΆμ λ° μ΄λ
- μ£μ§ ν΄λ¦: μ°κ²°μ μ ν΄λ¦νλ©΄ μμ€ μ½λ μ 보 νμ
- μλ λ μ΄μμ: κ³μΈ΅μ κ΅¬μ‘°λ‘ μλ μ λ ¬
π μ§μνλ νλ‘μ νΈ κ΅¬μ‘°
Pages Router (Next.js 12 μ΄ν)
pages/
βββ index.js β /
βββ about.js β /about
βββ user/
β βββ index.js β /user
β βββ [id].js β /user/[id]
βββ api/
βββ users.js β /api/usersApp Router (Next.js 13+)
app/
βββ page.js β /
βββ about/
β βββ page.js β /about
βββ user/
β βββ page.js β /user
β βββ [id]/
β βββ page.js β /user/[id]
βββ api/
βββ users/
βββ route.js β /api/usersπ κ°μ§λλ λ€λΉκ²μ΄μ ν¨ν΄
λꡬλ λ€μκ³Ό κ°μ μ½λ ν¨ν΄μ μλμΌλ‘ κ°μ§ν©λλ€:
// router.push() νΈμΆ
import { useRouter } from "next/router";
const router = useRouter();
router.push("/dashboard");
// Link μ»΄ν¬λνΈ
import Link from "next/link";
<Link href="/profile">νλ‘ν</Link>;
// router.replace() νΈμΆ
router.replace("/login");βοΈ μꡬμ¬ν
- Node.js: 14.0.0 μ΄μ
- Next.js νλ‘μ νΈ: Pages Router λλ App Router
- λΈλΌμ°μ : λͺ¨λ λΈλΌμ°μ (Chrome, Firefox, Safari, Edge)
π μμ μΆλ ₯
λꡬ μ€ν ν μμ±λλ HTML νμΌμ λΈλΌμ°μ μμ μ΄λ©΄:
πΊοΈ Next.js λΌμ°νΈ λ§΅ μμ± μ€...
π νλ‘μ νΈ κ²½λ‘: ./my-next-app
π¨ ν
λ§: light
π μΆλ ₯ νμ: web
μκ°ν νμΌ μμ±: ./my-next-app/route-visualizer.htmlπ οΈ κ°λ°μ μ 보
νλ‘μ νΈ κ΅¬μ‘°
next-route-map/
βββ src/
β βββ cli/ # CLI λͺ
λ Ήμ΄ μ²λ¦¬
β βββ parser/ # λΌμ°νΈ νμ± μμ§
β βββ types/ # TypeScript νμ
μ μ
βββ dist/ # λΉλλ νμΌ
βββ example-next/ # ν
μ€νΈμ© Next.js νλ‘μ νΈκΈ°μ μ€ν
- TypeScript: νμ μμ μ±
- Commander.js: CLI νλ μμν¬
- Glob: νμΌ ν¨ν΄ λ§€μΉ
- Cytoscape.js: κ·Έλν μκ°ν
π€ κΈ°μ¬νκΈ°
- μ΄ μ μ₯μλ₯Ό ν¬ν¬ν©λλ€
- κΈ°λ₯ λΈλμΉλ₯Ό μμ±ν©λλ€ (
git checkout -b feature/amazing-feature) - λ³κ²½μ¬νμ 컀λ°ν©λλ€ (
git commit -m 'Add amazing feature') - λΈλμΉμ νΈμν©λλ€ (
git push origin feature/amazing-feature) - Pull Requestλ₯Ό μμ±ν©λλ€
π λΌμ΄μ μ€
μ΄ νλ‘μ νΈλ MIT λΌμ΄μ μ€ νμ λ°°ν¬λ©λλ€. μμΈν λ΄μ©μ LICENSE νμΌμ μ°Έμ‘°νμΈμ.
π λ²κ·Έ 리ν¬νΈ & κΈ°λ₯ μμ²
λ¬Έμ κ° λ°μνκ±°λ μλ‘μ΄ κΈ°λ₯μ μ μνκ³ μΆμΌμλ©΄ GitHub Issuesμ λ±λ‘ν΄ μ£ΌμΈμ.
π κ΄λ ¨ νλ‘μ νΈ
- Next.js - React νλ μμν¬
- Cytoscape.js - κ·Έλν μκ°ν λΌμ΄λΈλ¬λ¦¬
- webpack-bundle-analyzer - λ²λ€ λΆμ λꡬ (μκ°μ λ°μ νλ‘μ νΈ)
β μ΄ νλ‘μ νΈκ° μ μ©νλ€λ©΄ GitHubμμ μ€νλ₯Ό λλ¬μ£ΌμΈμ!
