什麼是 Wayfinder
Laravel Wayfinder 是可將 Laravel 後端與 TypeScript 前端零阻力地連接的套件。它會自動從 controller 與路由產生完整型別化的 TypeScript 函式,因此可以從前端程式碼將 Laravel 的 endpoint 當作函式直接呼叫。 URL 硬編碼、路由參數的手動管理、後端變更的手動同步——這些全部都不再需要。Wayfinder 為 Beta 版(目前 v0.1.x)。到 v1.0.0 釋出前 API 可能會變更。所有重要變更都會記錄在 CHANGELOG 中。
Ziggy 與 Wayfinder 的差異
什麼是 Ziggy
Ziggy 是長年廣泛用於 Laravel 生態系的路由 helper。它會將 Laravel 的路由定義公開到 JavaScript 端,可用route('posts.show', { id: 1 }) 這樣的形式產生 URL。
為何被 Wayfinder 取代
Ziggy 以字串處理路由名稱與參數,因此在與 TypeScript 相容性上有其極限。路由名稱的拼寫錯誤或錯誤的參數名只會變成執行時錯誤。 Wayfinder 是 TypeScript 優先設計,會將 controller 方法產生為 可 import 的函式。
在基於 Inertia 的 Laravel 入門套件(React、Vue、Svelte)中,Wayfinder 是標準採用。
安裝
1. 使用 Composer 安裝伺服器端套件
2. 使用 NPM 安裝 Vite plugin
3. 在 vite.config.js 中新增 plugin
產生 TypeScript 定義檔
使用wayfinder:generate 指令產生 TypeScript 檔案。
resources/js 下產生 3 個目錄。
--path 選項。
基本用法
import 與使用 action
以下是產生對應PostController 的 show 方法的 URL 範例。
.url()。
傳遞參數的方式
Wayfinder 的函式可接受多種形式的參數。/posts/{post:slug}),可使用該值。
import 整個 controller
也可以 import 整個 controller 呼叫方法。單一 action controller
單一 action controller(Invokable Controller)可以直接呼叫 import 的函式。import 命名路由
要以路由名稱存取時,請使用routes/ 下的檔案。
Query 參數
所有 Wayfinder 函式都可以用query 選項加上 query 參數。
mergeQuery。
Form 變體
要在傳統 HTML form 中使用時,加上--with-form 選項產生,並使用 .form 變體。
Inertia 與 Wayfinder 的組合
結合 Inertia 的 form helper 與 Wayfinder,可以完全不寫 URL 字串即可送出表單。Link 元件也可以同樣使用。
於入門套件中的採用
使用laravel new 建立新專案並選擇 React、Vue、Svelte 時,會取得已自動設定 Wayfinder 的組合。入門套件包含:
- Composer 套件
laravel/wayfinder - NPM 套件
@laravel/vite-plugin-wayfinder vite.config.js已設定 plugin.gitignore已加入產生目錄
保留字與衝突方法名稱的處理
delete 或 import 這類與 JavaScript 保留字同名的 controller 方法會加上 Method 後綴。
目前狀況(v0.1.x)
目前穩定版於v0.1.x 分支提供。截至 2026 年 3 月,最新版本為 v0.1.15。
v0.1.x 系列主要變更歷程
next 分支開發中的下一代功能
next 分支正在開發從目前 v0.1.x 大幅擴充功能的下一版本。
產生的 TypeScript 範圍大幅擴大
v0.1.x 只以路由與 controller action 為對象,下一版本則會將以下項目全部產生為 TypeScript。Form Request 的 TypeScript 型別產生
Eloquent Model 的型別產生
types.d.ts 中產生型別。
PHP Enum 轉為 TypeScript
輸出目錄的變更
v0.1.x 分為actions/、routes/、wayfinder/ 三個目錄,下一版本將統整到 resources/js/wayfinder 下。
從 v0.1.x 到 next 的主要變更
- import 路徑從
@/actions/...變更為@/wayfinder/... - 廢除
--skip-actions、--skip-routes、--with-formflag,改為透過設定檔設定 types.ts改為types.d.ts
總結
Laravel Wayfinder 是將 Ziggy 提供的「從 JavaScript 參照 Laravel 路由」功能以 TypeScript 優先重新設計的套件。透過 import 產生函式後使用的方式,在型別安全、IDE 支援、tree shaking 三個面向都大幅改善。 目前的 v0.1.x 也能實現型別安全地參照路由與 controller action,並在基於 Inertia 的 Laravel 入門套件中作為標準採用。而正在next 分支開發的下一版本,將進化為包含 Form Request、Eloquent Model、Enum、Inertia 頁面 prop 都以 TypeScript 產生的更全面型別安全基盤。
Laravel Wayfinder GitHub
原始碼、CHANGELOG、Issue 請見此處。
Vite Plugin Wayfinder
Vite plugin 設定選項的詳情請見此處。