利用WebPack 打包 Vue 項目,部署在 Github Pages 上遇到的小坑

最近 vue-cli 生成的 project 想 build 在 github page

上使用。但是直接 build 出來的 dist 目錄部署在 github page 上的時候,卻發現頁面顯示不出來。

查看 dist 文件夾的目錄結構, 以及請求的圖片 url :

發現這是比較常見的問題,因為webpack 默認設置的 public 路徑在網站根目錄 / 上。會導致請求 public 資源的時候去 github.io/ 的根目錄下獲取資源,而不是 github.io/myPage/ index.html的同目錄下,導致 public 路徑無法找到。

這類問題解決辦法很多,最常用的就是將 webpack 的 config 文件的 prod 方式下 的 public 根路徑由 / 改成 ./ 保證編譯出來的 html 在同目錄下讀取 public 里的資源:

這樣做的方法用了很久,一直沒有什麼問題。直到在工程中的 css 下使用了

background-img 屬性,發現打包出來的頁面背景圖無法顯示。

查看網頁調試,發現圖片的請求 404 了。再查看請求目錄,發現本該請求圖片的 /static/img/ 的地址詭異的變成了 /static/css/static/img/:

思考原因:估計是之前的 public 根目錄修改成

./static 的原因。導致編譯時將 css 文件讀取 static 的資源目錄也從 css 文件 的當前目錄來加上 /static,從而形成了這個詭異的路徑。

解決辦法:單獨修改 csss 編譯時引用 public 資源的路徑。於是在 css-loader 的設置里使用ExtractTextWebpackPlugin 插件,設置

publicPath 屬性:

問題解決。

推薦閱讀:

有哪些github pages開源項目可以用來建博客?
怎麼用hexo上傳一個README.md到github?(Ubuntu)
Github Pages/GitCafe pages 可以搭建博客,並且可以綁定域名,是基於什麼原理的呢?
使用 GitHub Pages 來做博客是否道德?
Github Pages 能玩出什麼花樣?

TAG:vuecli | webpack | GithubPages |