有的時候項目需要部署在服務器的子目錄下,這時就要根據開發環境或生產環境動態配置 vite.config.ts
中的 base
選項。
查看vscode的TS類型提示:
可以發現:defineConfig接收一個UserConfig對象,或者一個返回UserConfig對象的函數,這個函數接收一個ConfigEnv對象作為參數,ConfigEnv的類型聲明如下:
command
屬性一共有兩個值 build
和 serve
,對應了 package.json
定義的腳本名稱,分別為構建生產版本和開啟開發服務。可以通過解構並判斷 command
的值,來動態給base賦值,代碼如下:
export default defineConfig(({ command }) => {
// 根據command動態配置base
let base: string
if (command === 'build') {
base = '/jxxt/'
} else {
base = '/'
}
// 返回 UserConfig
return {
base,
...{ otherOptions },
}
})
這個時候就可以根據我們的命令動態配置 base
了。
PS: 也可以根據 ConfigEnv
中的 mode
屬性來判斷,但是這個屬性沒有類型約束,需要確定拼寫正確。