我先简单介绍下这两个loader:
file-loader 用于处理文件
url-loader也可以处理图片和字体,可以设置较小资源自动base64,减少http请求
下面我以file-loader为例介绍webpack解析图片字体:
1.安装:cnpm i file-loader -D
2.在src下引入图片,并新建index.js
import logo from './1574926505.jpg'
let imgNode=new Image();
imgNode.setAttribute('src',logo);
document.body.appendChild(imgNode);
3..webpack.config.js中配置
"use strict";
const path=require('path');
module.exports={
entry:'./src/index.js',
output:{
path:path.join(__dirname,'dist'),
filename:'bundle.js'
},
mode:'production',
module:{
rules:[
{
test:/\.(png|jpg|svg|gif)$/,
use:'file-loader'
}
]
}
}
4.npm run build打包
Tips:
字体和图片操作流程一样,这里就不多做介绍,只需修改一下匹配规则
webpack 目前的打包入口只能是以 js 为入口的,暂时还不支持以 html 为入口进行打包,也就是 webpack 默认是不会分析 html 文件里面的依赖(比如 src=xxx 或者 外部 css 中的语法)。可以看下这个 issue 的讨论:(https://github.com/webpack/webpack/issues/536)
在html里用img的src引用图片。
解决办法:可以增加 html-loader 去处理 html,这样的话可以识别的了 img:src 这个属性。html-loader 提供了解析 html 里面的图片引入的能力