type: "asset/resource"和type: "asset"的区别: l type: "asset/resource" 相当于file-loader, 将文件转化成 Webpack 能识别的资源,其他不做处理 l type: "asset" 相当于url-loader, 将文件转化成 Webpack 能识别的资源,同时小于某个大小的资源会处理成 data URI 形式 开发中可能还存在一些其他资源,如音视频等 结语: 从第一篇开始看,更容易入手(一)修改输出资源的名称和路径
1. 配置
const { request } = require("http");
const path = require('path')
module.exports = {
//入口:相对路径和绝对路径都行
entry: './src/main.js',
//输出
output: {
/**
* path:文件输出目录,必须是绝对路径
* path.resolve方法返回一个绝对路径
* __dirname当前文件的文件夹绝对路径
*/
path: path.resolve(__dirname,'dist'),
//文件输出的名字 将 js 文件输出到 static/js 目录中
filename: 'static/js/main.js'
},
//加载器
module: {
rules: [
......
{
//用来配置图片文件
test:/\.(png|jpe?g|gif|webp)$/,
type:'asset',
parser:{
dataUrlCondition:{
maxSize:50*1024 // 小于50kb的图片会被base64处理
}
},
generator:{
/**
* 将图片文件输出到 static/imgs 目录中
* 将图片文件命名 [hash:8][ext][query]
* [hash:8]: hash值取8位
* [ext]: 使用之前的文件扩展名
* [query]: 添加之前的query参数
*/
filename: 'static/imgs/[hash:8][ext][query]'
}
},
]
},
//插件
plugins: [
],
//模式
mode:'development', //开发模式
};
2. 输出文件目录
(二)自动清空上次打包资源
1. 配置
const { request } = require("http");
const path = require('path')
module.exports = {
//入口:相对路径和绝对路径都行
entry: './src/main.js',
//输出
output: {
/**
* path:文件输出目录,必须是绝对路径
* path.resolve方法返回一个绝对路径
* __dirname当前文件的文件夹绝对路径
*/
path: path.resolve(__dirname,'dist'),
//文件输出的名字 将 js 文件输出到 static/js 目录中
filename: 'static/js/main.js',
// 自动将上次打包目录资源清空
clean:true,
},
//加载器
module: {
......
(三)处理字体图标资源
1. 配置
const { request } = require("http");
const path = require('path')
module.exports = {
//入口:相对路径和绝对路径都行
entry: './src/main.js',
//输出
output: {
/**
* path:文件输出目录,必须是绝对路径
* path.resolve方法返回一个绝对路径
* __dirname当前文件的文件夹绝对路径
*/
path: path.resolve(__dirname,'dist'),
//文件输出的名字 将 js 文件输出到 static/js 目录中
filename: 'static/js/main.js',
// 自动将上次打包目录资源清空
clean:true,
},
//加载器
module: {
rules: [
......
{
//用来配置字体图标文件
test:/\.(ttf|woff2?)$/,
type:'asset/resource',
generator:{
/**
* 将文件输出到 static/media 目录中
* 将图片文件命名 [hash:8][ext][query]
* [hash:8]: hash值取8位
* [ext]: 使用之前的文件扩展名
* [query]: 添加之前的query参数
*/
filename: 'static/media/[hash:8][ext][query]'
}
},
]
},
//插件
plugins: [
],
//模式
mode:'development', //开发模式
};
(四)处理其他资源
1. 配置
const { request } = require("http");
const path = require('path')
module.exports = {
//入口:相对路径和绝对路径都行
entry: './src/main.js',
//输出
output: {
/**
* path:文件输出目录,必须是绝对路径
* path.resolve方法返回一个绝对路径
* __dirname当前文件的文件夹绝对路径
*/
path: path.resolve(__dirname,'dist'),
//文件输出的名字 将 js 文件输出到 static/js 目录中
filename: 'static/js/main.js',
// 自动将上次打包目录资源清空
clean:true,
},
//加载器
module: {
rules: [
......
{
//用来配置字体图标文件
test:/\.(ttf|woff2?|map4|map3|avi)$/,
type:'asset/resource',
generator:{
/**
* 将文件输出到 static/media 目录中
* 将图片文件命名 [hash:8][ext][query]
* [hash:8]: hash值取8位
* [ext]: 使用之前的文件扩展名
* [query]: 添加之前的query参数
*/
filename: 'static/media/[hash:8][ext][query]'
}
},
]
},
//插件
plugins: [
],
//模式
mode:'development', //开发模式
};