項目背景 我們的系統(一個 ToB 的 Web 單頁應用)前端單頁應用經過多年的迭代,目前已經累積有大幾十萬行的業務代碼,30+ 路由模塊,整體的代碼量和複雜度還是比較高的。 項目整體是基於 Vue + TypeScirpt,而構建工具,由於最早項目是經由 vue-cli 初始化而來,所以自然而然使 ...
我們先看下官方說明
預設情況下,Vue CLI 會假設你的應用是被部署在一個功能變數名稱的根路徑上,例如 https://www.my-app.com/ 。如果應用被部署在一個子路徑上,你就需要用這個選項指定這個子路徑。例如,如果你的應用被部署在 https://www.my-app.com/my-app/ ,則設置 publicPath 為 /my-app/。
這個值也可以被設置為空字元串 ('') 或是相對路徑 ('./'),這樣所有的資源都會被鏈接為相對路徑,這樣打出來的包可以被部署在任意路徑,也可以用在類似 Cordova hybrid 應用的文件系統中。
[https://cli.vuejs.org/zh/config/#publicpath]
案例
圖片中的第二個紅框,webapps是功能變數名稱所在的根目錄,部署credit--verify是子目錄,所以必須修改publicPath
代碼
module.exports = {
publicPath: process.env.NODE_ENV === 'production'
? './'
: '/'
}