欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【webpack脱坑指南】打包之后css中资源文件路径不正确

程序员文章站 2022-07-16 17:10:54
...

bug描述

项目中使用了 layer,在执行 webpack 打包编译之后,layer.css 文件中用到的资源文件路径找不到,导致放大和关闭图标无法在页面上正常显示。
【webpack脱坑指南】打包之后css中资源文件路径不正确

原因:(来自官方文档)

对于按需加载(on-demand-load)或加载外部资源(external resources)(如图片、文件等)来说,output.publicPath 是很重要的选项。如果指定了一个错误的值,则在加载这些资源时会收到 404 错误。

就是说:当你 require 了一些第三方插件或者网络资源,并且这些资源中包含 uri 属性,比如 css 中的 background:url(./icon.png) no-repeat},那就要使用output.publicPath,否则就会找不到该路径。当然,如果这些资源中不包含 uri,那这个属性就没用。

解决方法

在配置项内加入 publicPath 属性,设置为部署时的绝对路径。
比如:我的页面通过如下url 方式让用户访问

http://xx.xx.xx.xx:9627/client/webapp/images/icon-551539f873d9ebe0792b120a9867d399.png

那么 pubilcPath 的值就应该是 ‘/client/webapp/images/’,也就是部署接口地址。

{
                test: /\.(png|svg|jpg|gif)$/,
                use: {
                    loader: 'file-loader',
                    options: {
                        outputPath: 'images',
                        name: '[name]-[hash].[ext]',
                        publicPath:"/client/webapp/images/"   
                    }
                }
            },

这样做之后,webpack打包时还会将图片复制到 /images 路径下,但是它还会把 css 文件中的 background url 改写为 publicPath + name .

相关标签: webpack脱坑指南

上一篇: floodlight安装教程

下一篇: @Retention