webpack5.0中使用file-loader的问题

1. webpack5.0 中对css图片路径的处理

环境

    "webpack": "^5.70.0",
    "file-loader": "^6.2.0",
    "webpack-cli": "^4.9.2"
1.1 没有任何处理

/* image.css */
.image-bg {
  background-image: url("../img/WechatIMG2.jpeg");
  width: 300px;
  height: 300px;
}


// createDOM.js
import "../css/image.css";

const bgDivEl = document.createElement("div");
bgDivEl.className = "image-bg";

document.body.append(bgDivEl);

webpack的配置

const path = require("path");
module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "bundle.js",
  },
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: [
          "style-loader",
          "css-loader"
        ],
      },
    ],
  },
};

打包信息

在这里插入图片描述

结果

在这里插入图片描述
这里的图片显示了
在这里插入图片描述

根据webpack5.0的文档,webpack asset module中介绍了
在这里插入图片描述

1.2 js 中引入图片

对上面来说的不同,使用esModule 方式引入了图片

import "../css/image.css";
import img from "../img/WechatIMG2.jpeg";

const imgELement = document.createElement("img");
imgELement.src = img;

const bgDivEl = document.createElement("div");
bgDivEl.className = "image-bg";

document.body.append(bgDivEl);
document.body.appendChild(imgELement);

对其进行打包,不添加file-loader进行处理,得到的打包结果
在这里插入图片描述

添加配置信息

const path = require("path");
module.exports = {
  entry: "./src/main.js",
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "bundle.js",
  },
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: [
          "style-loader",
          "css-loader",
        ],
      },
      {
        test: /\.jpeg$/i,
        use: [
          {
            loader: "file-loader",
          },
        ],
      },
    ],
  },
};

打包的结果:dist的目录出现了两个图片,有一个是打不开的,是一段代码,是对第二个图片的引用
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

期望

  • css背景图和js引入的图片都显示

结果

  • css背景图没显示

解决方法及原因

在这里插入图片描述

{
     test: /\.jpeg$/i,
     use: [
       {
         loader: "file-loader",
       },
     ],
     dependency: { not: ["url"] },
 },
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值