問題是這樣的 ,我有一個公共元件模組,其中包含less寫的樣式而且樣式中有url形式的背景圖。其他專案在引用這個模組的時候,會引入這個less檔案,專案使用webpack打包後會單獨抽離出css樣式檔案(ExtractTextPlugin)。這就導致一個問題,背景圖片使用的相對地址在各個專案中無法找到的,也就是背景圖片報404
錯誤。
網上的解決方案
1. 絕對地址
最簡單的但是把圖片上傳到檔案伺服器,然後使用絕對地址。但是每次更新圖片都要上傳伺服器,而且無法控制多個版本。
2. 使用字型檔案
這種方法存在跨域問題,不適合公共元件樣式。
3. base64轉碼
如果使用webpack對公共元件模組進行打包的話,我們可以把file-loader把圖片轉為base64,然後把css一起打包進js。但是如果背景圖片被多次引用會出現許多重複的base64圖片。而且外部專案直接引入es6模組,所以公共模組本身沒有必要打包。