溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么解決webpack打包c(diǎn)ss背景圖片路徑問題

發(fā)布時(shí)間:2021-03-18 14:59:13 來源:億速云 閱讀:784 作者:小新 欄目:web開發(fā)

這篇文章給大家分享的是有關(guān)怎么解決webpack打包c(diǎn)ss背景圖片路徑問題的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

在vue組件的style標(biāo)簽內(nèi)部有如下一段使用背景圖片的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目錄的發(fā)現(xiàn)沒有css文件。這是因?yàn)閏ss文件被轉(zhuǎn)化成了js文件。

怎么解決webpack打包c(diǎn)ss背景圖片路徑問題 

此時(shí)啟動項(xiàng)目,背景圖片引入正確,能夠正常顯示。

2 將css文件提取到單獨(dú)的文件目錄

使用 mini-css-extract-plugin 將css文件單獨(dú)提取到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目錄結(jié)構(gòu)如下

怎么解決webpack打包c(diǎn)ss背景圖片路徑問題

可以看到此時(shí)圖片在根目錄(dist)目錄下,但是css文件處在dist/css/目錄下?,F(xiàn)在來看一下打包后的css文件是如何引用圖片的路徑。

2.3 打包結(jié)果

background-image: url(bb65a86a2fe7669e483a56b970bea421.png);

可以看到在dist/css目錄下沒有bb65a86a2fe7669e483a56b970bea421.png圖片。因此圖片無法正常顯示。理想的情況是

background-image: url(../bb65a86a2fe7669e483a56b970bea421.png);

3 解決方案

更改loader的配置如下

{
        loader: MiniCssExtractPlugin.loader,
        options: {
            // 當(dāng)前的css所在的文件相對于打包后的根路徑dist的相對路徑
            publicPath: '../'
        }
    }, 'css-loader', 'less-loader'

感謝各位的閱讀!關(guān)于“怎么解決webpack打包c(diǎn)ss背景圖片路徑問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI