點燈坊

失くすものさえない今が強くなるチャンスよ

在 URI 前面加上 Prefix

Sam Xiao's Avatar 2020-04-13

Vue 在 Development 階段都是 /,但在 Production 階段配合 Reverse Proxy 則可能有所改變,如變成 /portal,該如何簡單的設定呢 ?

Version

macOS Catalina 10.15.4
WebStorm 2020.1
Vue CLI 4.3.0
Vue 2.6.10

vue.config.js

module.exports = {
  publicPath: process.env.NODE_ENV === 'production' ? '/portal/' : '/',
}

如實際 deployment 時,可能希望為 /portal,但本機只要 / 即可,可在 vue.config.js 加上 publicPath,由 process.env.NODE_ENV 判斷為 yarn serveyarn build 執行,動態改變 publicPath 即可。

Conclusion

  • 雖然是很簡單的設定,但實務上卻非常有用,只要修改 vue.config.js 即可,不用大幅度修改 route
  • 不過這種方式有個限制,若 asset 放在 public 目錄下無效,因為 publicPath 是透過 Webpack 處理,但預設並不會處理 public 目錄,所以建議 asset 全部改放在 src/assets 目錄下

Reference

Vue CLI, publicPath