案例准备
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305102510228-799262443.png)
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305102534957-980446239.png)
file-loader
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305103300157-2076423599.png)
文件的名称规则
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305103332419-1323624705.png)
设置文件名称
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305103348849-1960689410.png)
设置文件的存放路径
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305103415854-324204078.png)
url-loader
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305103518490-342538719.png)
url-loader的limit
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305103613654-2144280009.png)
目录结构
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305104007193-1919675070.png)
wk.config.js
const path = require('path');
module.exports = {
entry: "./src/main.js",
output: {
filename: "bundle.js",
// 必须是一个绝对路径
path: path.resolve(__dirname, "./build")
},
module: {
rules: [
{
// 规则使用正则表达式
test: /.css$/, // 匹配资源
use: [
// { loader: "css-loader" },
// 注意: 编写顺序(从下往上, 从右往做, 从后往前)
"style-loader",
{
loader: "css-loader",
options: {
importLoaders: 1
}
},
"postcss-loader"
],
// loader: "css-loader"
},
{
test: /.less$/,
use: [
"style-loader",
{
loader: "css-loader",
options: {
importLoaders: 2
}
},
"postcss-loader",
"less-loader"
]
},
{
test: /.(png|jpe?g|gif|svg)$/,
use: [
{
loader: 'url-loader',
options: {
// 打包到img目录下,保留文件名、6位哈希、扩展名,连接符除了句点,还可以用-等
// 效果等同于outputpath,但是这种写法更常用
name: "img/[name].[hash:6].[ext]",
limit: 100 * 1024 // 100kb以下的图片
}
}
]
}
]
}
}
asset module type的介绍
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305162246913-1341357251.png)
Asset module type的使用
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305162348075-1070249314.png)
url-loader的limit效果
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305162612734-240715041.png)
加载字体文件
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305162647177-937362249.png)
字体的打包
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305162721437-736433369.png)
目录结构
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305162805629-1087444101.png)
wk.config.js
const path = require('path');
module.exports = {
entry: "./src/main.js",
output: {
filename: "bundle.js",
// 必须是一个绝对路径
path: path.resolve(__dirname, "./build"),
// assetModuleFilename: "img/[name].[hash:6][ext]"
},
module: {
rules: [
{
// 规则使用正则表达式
test: /.css$/, // 匹配资源
use: [
// { loader: "css-loader" },
// 注意: 编写顺序(从下往上, 从右往做, 从后往前)
"style-loader",
{
loader: "css-loader",
options: {
importLoaders: 1
}
},
"postcss-loader"
],
// loader: "css-loader"
},
{
test: /.less$/,
use: [
"style-loader",
{
loader: "css-loader",
options: {
importLoaders: 2
}
},
"postcss-loader",
"less-loader"
]
},
{
test: /.(png|jpe?g|gif|svg)$/,
// type: "asset/resource", file-loader的效果
// type: "asset/inline", url-loader的效果
type: "asset",
generator: {
filename: "img/[name].[hash:6][ext]"
},
// 是parser,不是parse
parser: {
dataUrlCondition: {
// 是maxSize,不再是limit
maxSize: 100 * 1024
}
}
},
{
test: /.ttf|eot|woff2?$/i,
type: "asset/resource",
generator: {
filename: "font/[name].[hash:6][ext]"
}
}
]
}
}
index.html
- 注意,index.html中要使用字体图标,html代码要写在打包后的资源文件后面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script src="./build/bundle.js"></script>
<!-- 注意,index.html中要使用字体图标,html代码要写在打包后的资源文件后面 -->
<div class="iconfont icon-caps-lock"></div>
<div class="iconfont icon-ashbin"></div>
<div class="iconfont icon-caps-lock"></div>
</body>
</html>
![](https://img2020.cnblogs.com/blog/1877004/202103/1877004-20210305164107439-352299700.png)