這篇文章給大家分享的是有關怎么解決webpack打包css背景圖片路徑問題的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
在vue組件的style標簽內部有如下一段使用背景圖片的css代碼
background-image: url("../assets/img/icon_add.png");
在webpack中css-loader的解析配置如下
{ test: /\.(css|less)$/, exclude: path.resolve(__dirname, 'node_modules'), use: ['style-loader', 'css-loader', 'less-loader'] }
打包后在dist目錄的發現沒有css文件。這是因為css文件被轉化成了js文件。
此時啟動項目,背景圖片引入正確,能夠正常顯示。
2 將css文件提取到單獨的文件目錄
使用 mini-css-extract-plugin 將css文件單獨提取到dist目錄下的css目錄下。
2.1 loader配置
{ test: /\.(css|less)$/, exclude: path.resolve(__dirname, 'node_modules'), use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader'] }
2.2 plugin配置
new MiniCssExtractPlugin({ filename: 'css/[name][contenthash].css', })
打包后,dist目錄結構如下
可以看到此時圖片在根目錄(dist)目錄下,但是css文件處在dist/css/目錄下?,F在來看一下打包后的css文件是如何引用圖片的路徑。
2.3 打包結果
background-image: url(bb65a86a2fe7669e483a56b970bea421.png);
可以看到在dist/css目錄下沒有bb65a86a2fe7669e483a56b970bea421.png圖片。因此圖片無法正常顯示。理想的情況是
background-image: url(../bb65a86a2fe7669e483a56b970bea421.png);
3 解決方案
更改loader的配置如下
{ loader: MiniCssExtractPlugin.loader, options: { // 當前的css所在的文件相對于打包后的根路徑dist的相對路徑 publicPath: '../' } }, 'css-loader', 'less-loader'
感謝各位的閱讀!關于“怎么解決webpack打包css背景圖片路徑問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。