您的位置:首页 >> Vue >> 《和小米一起学Vue.js》— webpack资源模块

《和小米一起学Vue.js》— webpack资源模块

[ 孤狼 | 2022-07-30 02:48:46 | Vue | 1685°C | 0条评论 ]

我们在项目中也会用到很多的图片和字体,我们也需要他直接被打包到项目里去。这个时候可以使用系统自带的Asset Modules来帮助我们打包文件。  

在webpack5之前,加载文件使用file-loader,url-loader和raw-loader三个loader来处理,在webpack5之后,官方推荐使用内置的Asset Modules来管理文件。    



Asset Modules

资源模块(asset module)是一种模块类型,它允许使用资源文件(字体,图标等)而无需配置额外 loader。

资源模块类型(asset module type),通过添加 4 种新的模块类型,来替换所有这些 loader:

asset/resource 发送一个单独的文件并导出 URL。之前通过使用 file-loader 实现。
asset/inline 导出一个资源的 data URI。之前通过使用 url-loader 实现。
asset/source 导出资源的源代码。之前通过使用 raw-loader 实现。
asset 在导出一个 data URI 和发送一个单独的文件之间自动选择。之前通过使用 url-loader,并且配置资源体积限制实现。



修改webpack.config.js配置文件

const path = require('path');
module.exports = {
mode: "production",
//所选模式告诉webpack相应地使用其内置优化。"production" | "development" | "none"
entry: "./src/main.js",
// 指定入口文件 string | object | array
output: {
// webpack 如何输出结果的相关选项
path: path.resolve(__dirname, "dist"), // string
// 所有输出文件的目标路径 , 必须是绝对路径(使用 Node.js 的 path 模块)
filename: "bundle.js", // string | array
// 出口文件名称
publicPath:'dist/',
// 公开地址(最终项目地址,所有被打包的文件路径都会加上此前缀)
},
module: {
rules: [
{
test: /\.css$/,
use: [ 'style-loader', 'css-loader' ]
},
{
test: /\.less$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "less-loader" // compiles Less to CSS
}]
},
{
test: /\.(png|svg|jpg|jpeg|gif)$/i,
type: 'asset',
//使用asset类型,可以自动base64小图片
parser: {
dataUrlCondition: {
maxSize: 8 * 1024 // 8kb
//自动装换base64最大文件大小,默认8kb,不写则默认
}
},
generator: {
filename: 'img/[name]_[hash:8][ext][query]',
//指定输出路径和文件名格式
}
},
{
test: /\.(png|svg|jpg|jpeg|gif)$/i,
type: 'asset',
//使用asset类型,可以自动base64小图片
parser: {
dataUrlCondition: {
maxSize: 8 * 1024 // 8kb
//自动装换base64最大文件大小,默认8kb,不写则默认
}
},
generator: {
filename: 'img/[name]_[hash:8][ext][query]',
//指定输出路径和文件名格式
}
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/i,
type: 'asset/resource',
generator: {
filename: 'fonts/[name]_[hash:8][ext][query]',
//指定输出路径和文件名格式
}
},
]
}
}

TIP:如果路劲不正确需要增加一个参数 publicPath 来指定项目路径   

 


新建图片资源

在src目录下新建img文件夹,并在其中放一张图片。  



修改css引用这张图片

body{background-image: url(../img/head.jpg);}



添加字体

在src目录下面新建font文件夹,并在其中放入一个字体。本案例使用字体来自阿里开源项目iconfont  



修改css调用字体

配置好 loader 并将字体文件放在合适的位置后,你可以通过一个 @font-face 声明将其混合。本地的 url(...) 指令会被 webpack 获取处理,就像它处理图片一样:

@font-face {
font-family: "testfont";
src: url('../font/iconfont.ttf') format('truetype');
}

.testfont {
font-family: "testfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}



修改html调用字体

<i class="testfont"></i>



打包项目

运行命令打包项目. 

npx webpack



代码下载

 下载地址:  密码:bg57


转载请注明出处:http://gl.paea.cn/n.php?n=184
 
如您看得高兴,欢迎随意投喂,让我们坚持创作!
赞赏一个鸡腿
还没有人留下遗迹
综合 · 搜索