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

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

    /* 设置一张背景图片 */body {background: url('../img/image.jpg');
    }
    
  2. index.js文件中引入该css文件:

    // 导入 css 文件
    import './css/style.css'
  3. 来看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'}}]}
    }
  4. 打包后,页面根本不显示图片,这个原因是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'}]}
    }
    
  5. 最主要的就是两段代码配置:esModule: falsetype: 'javascript/auto',这个配置适用于file-loader和url-loader


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部