為什麼要產生它,而不是複製一篇部落格文章
每個第一次設定 Vite 的人,最後都是從某篇部落格文章複製一份設定,而那些片段會腐壞:它們在只支援 ESM 的設定檔裡用 `path.resolve(__dirname, …)`、把建置目標釘在三年前、用一種已經對不上 Vite 目前拆分共用程式碼方式的手法拆 vendor chunk。結果它還是跑得起來,這正是問題所在——在部署時某個東西壞掉之前,沒有人會注意到那一段已經過時。
所以這個頁面只產生你勾選的東西,而且形狀符合 Vite 現在的寫法:
- 只產生你要的。 把代理欄位留空,就不會輸出一個空的 `server.proxy` 物件;不選預處理器,設定裡就沒有 `css` 區段。產生出來的檔案應該讀起來像人寫的檔案,而不是表單倒出來的內容——這也是它能在 pull request 裡被審閱的原因。
- 部落格片段最常錯的兩件事。 別名會以 `fileURLToPath(new URL("./src", import.meta.url))` 輸出,這在 Vite 以 ESM 載入的設定檔裡才成立;define 的值則會經過 `JSON.stringify`,讓版本字串維持是字串。這兩處正是複製來的設定在別人機器上壞掉的地方。
- 從清單產生代理規則。 一行一個後端路徑(或直接貼完整的 https://host/api URL 讓它自己拆),工具就會寫出 `server.proxy` 區塊,包含把前綴去掉的改寫,以及給 WebSocket 目標用的 `ws: true`。它也會標出陷阱:沒有 scheme 的目標、重複的路徑,以及 `secure: false`——那會關閉憑證檢查,只該用在本機開發。
什麼都不會上傳,也不會替你安裝任何東西:這個頁面只產生文字,它印出的安裝指令由你在自己決定的地方執行。兩點誠實的限制——它不知道你用的是哪個 Vite 版本,所以版本相關的選項只保留多年來一直穩定的那些;它也不會猜你的路由模式,只會提醒:`base` 不是 `/` 時,history 模式的路由也必須給同樣的值。如果你要檢查既有的設定而不是寫一份新的,那是這個系列裡的另一個工具。