解决webpack5.54打包图片及图标的问题

news/2025/2/21 5:19:09

解决webpack5.54打包图片及图标的问题

  • 问题描述
  • 分析原因
  • 解决方法
    • 一、loader的解决方法
    • 使用 Asset Modules 可以接收并加载任何文件,然后将其输出到构建目录。这就是说,我们可以将它们用于任何类型的文件,包括图片和字体。但未能设定指定目录,均打包成了静态的资源

问题描述

在用webpack5.54打包图片及图标的时,打包不报错,但浏览里图片与图标均看不见,尤其是css里的背景图片和iconfont图标

分析原因

打包后,发现图片文件除了在指定的文件目录下打包了文件,在根目录下也有打包的文件,但文件名为默认的hash名,但没有iconfont.css打包文件。

看了一下打包后.html和.css文件,图片的路径是根目录下,图片的路径均不对,但我在webpack.config.js文件中明明指定了路径,也按要求打包了文件,后来经上网查,发现是webpack5.54版本太新了的问题。
{
exclude: /.(js|json|html|css|less|sass|png|gif|jpg|jpeg)$/,
loader: ‘file-loader’,
options: {
outputPath: ‘font/’,
publicPath: ‘./font’,
name: ‘[name].[ext]’,
// esModule: false
},
// type:“javascript/auto”
// type:“asset”
}

解决方法

一、loader的解决方法

关于下载url- loader 之后打包图片不显示的问题
webpack5 已经启用旧版的assets loader, 需要在webpack.confid.js中添加配置(在对应的module中)
不会重复打包,多次使用同一个资源,只会生成一个文件。当在 webpack 5 中使用旧的 assets loader(如 file-loader/url-loader/raw-loader 等)和 asset 模块时,你可能想停止当前 asset 模块的处理,并再次启动处理,这可能会导致 asset 重复,你可以通过将 asset 模块的类型设置为 ‘javascript/auto’ 来解决。

关于html-loader 打包不显示的问题
需要在配置中添加
esModule: false// 关闭es6模块的解析, 使用commonjs模块解析在 webpack 5 之前,通常使用:

{
	exclude: /\.(js|json|html|css|less|sass|png|gif|jpg|jpeg)$/,
	loader: 'file-loader',
	options: {
		outputPath: 'font/',
		publicPath: './font',
		name: '[name].[ext]',
		esModule: false
	},
	type:"javascript/auto"
}

使用 Asset Modules 可以接收并加载任何文件,然后将其输出到构建目录。这就是说,我们可以将它们用于任何类型的文件,包括图片和字体。但未能设定指定目录,均打包成了静态的资源

 {
	exclude: /\.(js|json|html|css|less|sass|png|gif|jpg|jpeg)$/,
	type:"javascript/auto"
}

http://www.niftyadmin.cn/n/5860193.html

相关文章

React进阶之前端业务Hooks库(一)

前端业务Hooks库 项目结构实现useToggleuseToggle/index.ts单测packages/hooks/src/\_test_/index.test.tspackages/hooks/src/useToggle/\_tests_/index.test.ts打包实现gulp打包gulpfiles.js根目录/gulpfile.jswebpack打包webpack.config.jspackages/hooks/package.json使用e…

图论 之 BFS

文章目录 3243.新增道路查询后的最短距离1311.获取你好友已观看的视频 BFS:广度优先搜索(BFS) 是一种常用的算法,通常用于解决图或树的遍历问题,尤其是寻找最短路径或层级遍历的场景。BFS 的核心思想是使用队列(FIFO 数…

XTOM-TRANSFORM自动化三维测量系统用于汽车零部件质量控制

汽车行业正积极拥抱新技术,利用自动化技术提升竞争力。 自动化三维测量系统在汽车行业的应用,可最大限度减少人工干预,批量完成生产和交付零部件。新拓三维XTOM-TRANSFORM-ROB移动式自动化三维测量系统,已在汽车制造行业拥有成功…

windows下docker使用笔记

目录 镜像的配置 镜像的拉取 推荐镜像源列表(截至2025年2月测试有效) 配置方法 修改容器名字 如何使用卷 创建不同的容器,每个容器中有不同的mysql和java版本(不推荐) 1. 安装 Docker Desktop(Win…

Debezium 与 Apache Kafka 的集成方式

一、集成概述 Debezium 与 Apache Kafka 的集成主要通过 Kafka Connect 实现。 Kafka Connect 是一个用于数据集成的分布式平台,而 Debezium 作为 Kafka Connect 的 Source Connector,负责将数据库的变更数据捕获并发送到 Kafka。 二、集成步骤 1. 准…

【安装Tvikit包的时候提示 OpenCV 的旧宏 CV_WINDOW_AUTOSIZE不适配opencv3+】

安装Tvikit包的时候提示 OpenCV 的旧宏 CV_WINDOW_AUTOSIZE不适配opencv3 1. 查找所有 OpenCV 旧宏 使用 grep 工具全局搜索 CV_ 开头的宏,确保没有遗漏: bash grep -r “CV_” ~/lidar_odometry/src/fast_livo_ws/src/rpg_vikit/vikit_common 检查输…

从 JS 到 Dart:语法基础

声明:var final const。支持自动推断类型,但类型一直固定。未初始化的值为 null Final vs const: const 编译时确定,final 运行时确定 基本类型:num int double String bool List Set Map int.parse(‘1’); // 1 1.toString()带…

我用Ai学Android Jetpack Compose之Composable与View的区别与联系

本篇,我们来学习Composable与View的联系和区别,答案来自 通义千问, Q: Composable与View的联系和区别 在 Android 开发中,Composable 和 View 是两种不同的 UI 构建方式。它们分别属于 Jetpack Compose 和传统基于 XML 的视图系…