在vue组件的style标签内部有如下一段使用背景图片的css代码
background -i mage: url(" .. /assets/ img /icon_add.png");
在webpack中css-loader的解析配置如下
{ test : /\.(css|less)$/, exclude: path.resolve(__dirn am e, ' node_modules '), use: ['style-loader', 'css-loader', 'less-loader'] }
打包后在dist目录的发现没有css文件。这是因为css文件被转化成了js文件。
&nbs p;
此时 启动项 目,背景图片引入正确,能够 正常 显示。
2 将css文件提取到单独的文件目录
使用 mini-css-extract-plu gin 将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文件是如何引用图片的路径。
2.3 打包结果
background-image: url(bb65a86a2fe7669e483a56b970bea421.png);
可以看到在dist/css目录下没有bb65a86a2fe7669e483a56b970bea421. png图片 。因此图片无法正常显示。 理想 的情况是
background-image: url(bb65a86a2fe7669e483a56b970bea421.png);
3 解决 方案
更改loader的配置如下
{ loader: MiniCssExtractPlugin.loader, options: { // 当前的css所在的文件相对于打包后的根路径dist的相对路径 p ub licPath: '' } }, 'css-loader', 'less-loader'
总结
分离css文件导致css背景图片路径错误,解决方案的核心是配置publicPath的值,publicPath的值是css文件所在的文件目录相对于根目录的相对路径值。 比如,根路径是/,css文件所在的目录是/css/,因此相对路径是..
意外问题
为什么webpack打包后,css文件被 混入 到bundle.js文件中,但是图片没有被混入到bundle.js中???
到此这篇关于完美解决webpack打包css背景图片路径问题的 文章 就介绍到这了,更多相关webpack打包css背景图片路径内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
总结
以上是 为你收集整理的 完美解决webpack打包css背景图片路径问题 全部内容,希望文章能够帮你解决 完美解决webpack打包css背景图片路径问题 所遇到的问题。
如果觉得 网站内容还不错, 推荐好友。
查看更多关于完美解决webpack打包css背景图片路径问题的详细内容...