1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 解决 webpack5 打包 css 背景图片问题

解决 webpack5 打包 css 背景图片问题

时间:2023-07-04 19:04:53

相关推荐

解决 webpack5 打包 css 背景图片问题

现在我在src/css/style.css文件中,设置全局的图片:

/* 设置一张背景图片 */body {background: url('../img/image.jpg');}

index.js文件中引入该css文件:

// 导入 css 文件import './css/style.css'

来看webpack.config.js的配置:

// 导入 path 的 resolve 模块,进行路径拼接const { resolve } = require('path');// 导出 webpack 的配置对象,注意只能使用 CommonJS 的导出方式module.exports = {// 入口文件entry: './src/index.js',// 出口文件output: {// 打包到的目标地址,注意是绝对路径path: resolve(__dirname, './build'),// 打包出去的文件名filename: 'bundle.js'},// 配置模块module: {// 配置规则rules: [// 配置 css-loader{test: /\.css$/,use: ['style-loader','css-loader']},// 配置 file-loader{test: /\.(jpe?g|png|gif|svg)$/i,use: {loader: 'file-loader'}}]}}

打包后,页面根本不显示图片,这个原因是url-loader、file-loader都是采用es6语法规范的,而不是commonjs规范,由于url-loader、file-loader中可以通过esModule属性来选择是否关闭es6语法规范。其实官网也说了在webpack5中也不再推荐使用file-loader、url-loader,但是任然想使用这两个loader打包css背景图片的话,需要在webpack.config.js文件中做如下配置:

// 导入 path 的 resolve 模块,进行路径拼接const { resolve } = require('path');// 导出 webpack 的配置对象,注意只能使用 CommonJS 的导出方式module.exports = {// 入口文件entry: './src/index.js',// 出口文件output: {// 打包到的目标地址,注意是绝对路径path: resolve(__dirname, './build'),// 打包出去的文件名filename: 'bundle.js'},// 配置模块module: {// 配置规则rules: [// 配置 css-loader{test: /\.css$/,use: ['style-loader','css-loader']},// 配置 file-loader{test: /\.(jpe?g|png|gif|svg)$/i,use: {loader: 'file-loader',options: {esModule: false}},type: 'javascript/auto'}]}}

最主要的就是两段代码配置:esModule: falsetype: 'javascript/auto',这个配置适用于file-loader和url-loader

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。