webpack---打包图片资源
Posted _cai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack---打包图片资源相关的知识,希望对你有一定的参考价值。
一:图片分类:
1 css background-image: url(\'xxx.png\');
2 html <img src="xxx.png">
二:打包css 图片
1 下载 url-loader file-loader
npm i url-loader file-loader -D
三:打包html通过img使用图片
1 下载 html-loader
const { resolve } = require(\'path\'); const HtmlWebpackPlugin = require(\'html-webpack-plugin\'); module.exports = { entry: \'./src/index.js\', output: { filename: \'built.js\', path: resolve(__dirname, \'build\') }, module: { rules: [ { test: /\\.less$/, // 要使用多个loader处理用use use: [\'style-loader\', \'css-loader\', \'less-loader\'] }, { // 问题:默认处理不了html中img图片 // 处理图片资源 test: /\\.(jpg|png|gif)$/, // 使用一个loader // 下载 url-loader file-loader loader: \'url-loader\', options: { // 图片大小小于8kb,就会被base64处理 // 优点: 减少请求数量(减轻服务器压力) // 缺点:图片体积会更大(文件请求速度更慢) limit: 8 * 1024, // 问题:因为url-loader默认使用es6模块化解析,而html-loader引入图片是commonjs // 解析时会出问题:[object Module] // 解决:关闭url-loader的es6模块化,使用commonjs解析 esModule: false, // 给图片进行重命名 // [hash:10]取图片的hash的前10位 // [ext]取文件原来扩展名 name: \'[hash:10].[ext]\' } }, { test: /\\.html$/, // 处理html文件的img图片(负责引入img,从而能被url-loader进行处理) loader: \'html-loader\' } ] }, plugins: [ new HtmlWebpackPlugin({ template: \'./src/index.html\' }) ], mode: \'development\' };
注意:
- 虽然 没有配置file-loader,是因为url-loader 包含file-loader,当图片资源小于limit配置时,会以url-loader打包经过base64打包图片,优点减少http请求,大于limit配置时,会以file-loader打包图片资源
以上是关于webpack---打包图片资源的主要内容,如果未能解决你的问题,请参考以下文章
webpack-webpack核心概念(loader打包静态资源plugssourceMapdevServerHMRbabel)