设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 综合聚焦 > 编程要点 > 正文

webpack打包出现图片不显示怎样解决?

发布时间:2021-12-30 15:38 所属栏目:13 来源:互联网
导读:webpack打包出现图片不显示怎样办?一些朋友有遇到webpack打包后,图片路径不错不显示图片的情况,那么这时我们该怎样解决呢?下面我们一起来了解看看。 在vue组件的style标签内部有如下一段使用背景图片的css代码 background-image: url(../assets/img/icon
   webpack打包出现图片不显示怎样办?一些朋友有遇到webpack打包后,图片路径不错不显示图片的情况,那么这时我们该怎样解决呢?下面我们一起来了解看看。
 
    在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/目录下。现在来看一下打包后的css文件是如何引用图片的路径。
 
    3 解决方案
 
    更改loader的配置如下
 
{
        loader: MiniCssExtractPlugin.loader,
        options: {
            // 当前的css所在的文件相对于打包后的根路径dist的相对路径
            publicPath: '../'
        }
    }, 'css-loader', 'less-loader'
    总结
 
    分离css文件导致css背景图片路径错误,解决方案的核心是配置publicPath的值,publicPath的值是css文件所在的文件目录相对于根目录的相对路径值。 比如,根路径是/,css文件所在的目录是/css/,因此相对路径是..

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读