Ziggy에서 Inertia 스타터 킷으로 채택된 대체 패키지, Laravel Wayfinder를 설명합니다. Laravel 백엔드와 TypeScript 프론트엔드를 타입 안전하게 연결하는 구조부터, Ziggy와의 차이, 설치 · 기본 사용법, next 브랜치에서 진화하는 차세대 기능까지 자세히 소개합니다.
Laravel Wayfinder는 Laravel 백엔드와 TypeScript 프론트엔드를 제로 프릭션으로 연결하는 패키지입니다. 컨트롤러와 라우트에서 완전히 타입이 부여된 TypeScript 함수를 자동 생성하므로, 프론트엔드 코드에서 Laravel의 엔드포인트를 함수로서 직접 호출할 수 있습니다.URL의 하드 코딩, 라우트 파라미터의 수동 관리, 백엔드 변경의 수작업 동기화 — 이것들이 모두 불필요해집니다.
Wayfinder는 Beta 버전입니다 (현재 v0.1.x). v1.0.0 릴리스까지 API가 변경될 가능성이 있습니다. 중요한 변경은 모두 CHANGELOG에 기록됩니다.
Ziggy는 라우트 이름과 파라미터를 문자열로 다루므로, TypeScript와의 궁합에 한계가 있었습니다. 라우트 이름의 오타나 잘못된 파라미터 이름은 런타임 오류밖에 되지 않습니다.Wayfinder는 TypeScript 퍼스트 설계로, 컨트롤러의 메서드를 임포트 가능한 함수로서 생성합니다.
비교 항목
Ziggy
Wayfinder
라우트 참조 방법
route('posts.show', { id: 1 })
import { show } from "@/actions/..."
타입 안전성
타입 정의가 제한적
완전한 TypeScript 타입
IDE 지원
자동완성이 약함
자동완성 · 타입 체크 완전 대응
트리 셰이킹
전 라우트를 번들에 포함
사용한 라우트만 번들
생성 타이밍
런타임에 주입
빌드 타임에 정적 생성
Inertia 기반의 Laravel 스타터 킷(React · Vue · Svelte)에서는 Wayfinder가 표준으로 채택되어 있습니다.
resources/js/├── actions/ # 컨트롤러 액션의 함수│ └── App/Http/Controllers/│ └── PostController.ts├── routes/ # 이름 있는 라우트의 함수│ └── post.ts└── wayfinder/ # 타입 정의 파일 └── types.ts
생성되는 파일은 빌드할 때마다 완전히 재생성되므로, .gitignore에 추가할 것을 권장합니다. wayfinder, actions, routes의 3디렉터리를 함께 제외해 주세요.
Inertia의 폼 헬퍼와 Wayfinder를 조합하면, URL 문자열을 일절 쓰지 않고 폼 송신을 할 수 있습니다.
import { useForm } from "@inertiajs/react";import { store } from "@/actions/App/Http/Controllers/PostController";const form = useForm({ name: "My Post" });form.submit(store()); // POST /posts에 송신
Link 컴포넌트에서도 마찬가지로 사용할 수 있습니다.
import { Link } from "@inertiajs/react";import { show } from "@/actions/App/Http/Controllers/PostController";const Nav = () => ( <Link href={show(1)}>게시물 보기</Link>);
v0.1.x에서는 actions/, routes/, wayfinder/의 3디렉터리로 나뉘어 있었지만, 차기 버전에서는 resources/js/wayfinder 이하에 정리됩니다.
resources/js/wayfinder/├── App/Http/Controllers/│ └── PostController.ts # 액션 함수 (actions/가 폐지)├── routes/│ └── post.ts # 이름 있는 라우트 (동일)├── broadcast-channels.ts # 브로드캐스트 채널├── broadcast-events.ts # 브로드캐스트 이벤트└── types.d.ts # 전 타입 정의 (types.ts에서 변경)
Laravel Wayfinder는 Ziggy가 제공하고 있던 “Laravel의 라우트를 JavaScript에서 참조하는” 기능을, TypeScript 퍼스트로 재설계한 패키지입니다. 생성된 함수를 임포트해서 사용하는 접근에 의해 타입 안전성 · IDE 지원 · 트리 셰이킹 모두에서 크게 개선되어 있습니다.현재의 v0.1.x에서도 라우트와 컨트롤러 액션의 타입 안전한 참조가 실현되어 있어, Inertia 기반의 Laravel 스타터 킷에서 표준 채택되어 있습니다. next 브랜치에서 개발 중인 차기 버전에서는 Form Request · Eloquent 모델 · Enum · Inertia 페이지 prop까지 TypeScript로 생성하는, 보다 포괄적인 타입 안전 기반으로 진화할 예정입니다.