Webpack5 入门学习笔记(上):处理图片字体等资源
5 大核心概念
entry(入口),指示 Webpack 从哪个文件开始打包
output(输出),指示 Webpack 打包完的文件输出到哪里去,如何命名等
loader(加载器),webpack 本身只能处理 js、json 等资源,其他资源需要借助 loader,Webpack 才能解析
plugins(插件)扩展 Webpack 的功能
mode(模式),development 和 production
准备在项目根目录下创建配置文件:webpack.config.js
1 |
|
Webpack 是基于 Node.js 运行的,所以采用 Common.js 模块化规范
运行指令 npx webpack
面会以两个模式来分别搭建 Webpack 的配置,先进行开发模式,再完成生产模式
开发模式介绍
开发模式顾名思义就是开发代码时使用的模式。
这个模式下主要做两件事:
- 编译代码,使浏览器能识别运行
开发时有样式资源、字体图标、图片资源、html 资源等,webpack 默认都不能处理这些资源,所以要加载配置来编译这些资源
- 代码质量检查,树立代码规范
提前检查代码的一些隐患,让代码运行时能更加健壮。
提前检查代码规范和格式,统一团队编码风格,让代码更优雅美观。
处理样式资源:Css、Less、Sass、Scss、Styl
介绍
Webpack 本身是不能识别样式资源的,所以需要借助 Loader 来帮助 Webpack 解析样式资源。找 Loader 都应该去官方文档中找到对应的 Loader,然后使用官方文档(https://webpack.docschina.org/loaders/)找不到的话,可以从社区 Github 中搜索查询。
处理 Css 资源
1. 下载包,需要下载两个 loader
1 |
|
2. 功能介绍
css-loader
:负责将 Css 文件编译成 Webpack 能识别的模块style-loader
:会动态创建一个 Style 标签,里面放置 Webpack 中 Css 模块内容
此时样式就会以 Style 标签的形式在页面上生效
3. 配置
1 |
|
添加 Css 资源 然后运行查看效果
处理 Less 资源
- 下载包
npm i less-loader -D
less-loader
:负责将 Less 文件编译成 Css 文件
- 配置
在 module rules 数组里添加如下对象1
2
3
4{
test: /\.less$/,
use: ["style-loader", "css-loader", "less-loader"],
}, - 添加less资源,然后运行指令查看效果
处理 Sass 和 Scss资源
- 下载包
npm i sass-loader sass -D
sass-loader
:负责将 Sass 文件编译成 css 文件sass
:sass-loader
依赖sass
进行编译
- 配置,在 module rules 数组里添加如下对象
1 |
|
- 添加 Sass 资源,然后运行指令查看效果
处理 Styl 资源
- 下载包
npm i stylus-loader -D
stylus-loader
:负责将 Styl 文件编译成 Css 文件
- 配置,在 module rules 数组里添加如下对象
1 |
|
- 添加 Styl 资源,然后运行指令查看效果
处理图片资源
Webpack4 是通过 file-loader
和 url-loader
进行处理的。 Webpack5 已经将两个 Loader 功能内置到 Webpack 里了,只需简单配置即可使用。
- 配置
1 |
|
- 添加图片资源
- src/images/1.jpeg
- src/images/2.png
- src/images/3.gif
- 使用图片资源
- src/less/index.less
1 |
|
- src/sass/index.sass
1 |
|
- src/styl/index.styl
1 |
|
- 运行指令后查看资源输出情况
此时如果查看 dist 目录的话,会发现多了三张图片资源。因为 Webpack 会将所有打包好的资源输出到 dist 目录下。为什么样式资源没有呢?因为经过 style-loader
的处理,样式资源打包到 main.js 里面去了,所以没有额外输出出来。
- 对图片资源进行优化
将小于某个大小的图片转化成 data URI 形式(Base64 格式), 优点是减少请求数量,缺点是体积变得更大。
1 |
|
此时输出的图片文件就只有两张,有一张图片以 data URI 形式内置到 js 中了
(注意:需要将上次打包生成的文件清空,再重新打包才有效果)
修改输出资源的名称和路径
1 |
|
自动清空打包上次的资源
1 |
|
处理字体图标资源
- 从阿里巴巴矢量图标库下载字体图标文件
- 添加字体图标资源
src/fonts/iconfont.ttf
src/fonts/iconfont.woff
src/fonts/iconfont.woff2
src/css/iconfont.css
注意修改字体文件的路径
- 在js中引入资源,在html中使用资源
1
2
3
4<!-- 使用字体图标 -->
<i class="iconfont icon-arrow-down"></i>
<i class="iconfont icon-ashbin"></i>
<i class="iconfont icon-browse"></i> - 配置然后执行指令
1 |
|
type: "asset/resource"
和type: "asset"
的区别:
type: "asset/resource"
相当于file-loader
, 将文件转化成 Webpack 能识别的资源,其他不做处理type: "asset"
相当于url-loader
, 将文件转化成 Webpack 能识别的资源,同时小于某个大小的资源会处理成 data URI 形式
处理其他音频视频资源
配置:在上一步的规则匹配上修改
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!