webpack4.x实战六,处理图片
如何处理图片
处理图片
安装插件file-loader
执行npm install --save-dev file-loader
修改src/css/style.less
*{padding:0;margin:0;
}
body{background-color: #f5f5f5;
}
#app{width: 200px;height: 200px;background:url(../images/avatar.png);div {width: 100px;height:100px;color:green;border:1px pink solid;transform: translateX(300px);}
}
复制代码
创建文件夹src/images
mkdir src/images
复制代码
拷贝一张图片放到images文件夹中,名称修改为 avatar.png
修改webpack.config.js
const path = require('path');
var htmlWebpackPlugin = require('html-webpack-plugin');
const extractTextPlugin = require("extract-text-webpack-plugin");const extractCSS = new extractTextPlugin("css/[name]-[hash].css");
module.exports = {mode: 'development',entry: './src/js/app.js',output: {path: path.resolve(__dirname, 'dist'),filename: 'js/[name]-[hash].js'},module: {rules: [{test: /\.css$/,use: extractCSS.extract({fallback: "style-loader", // 编译后用什么loader来提取css文件use: [{ loader: 'css-loader' },{//浏览器添加前缀loader: 'postcss-loader',options: {ident: 'postcss',plugins: [require('autoprefixer')({broswers: ['last 5 versions']})]}}]})},{test: /\.less$/,use: extractCSS.extract({fallback: "style-loader", // 编译后用什么loader来提取css文件use: [{ loader: 'css-loader' },{//浏览器添加前缀loader: 'postcss-loader',options: {ident: 'postcss',plugins: [require('autoprefixer')({broswers: ['last 5 versions']})]}},{ loader: 'less-loader' }]})},{test: /\.js$/, //添加正则,处理js文件use: [//把ES6语法转换为ES5{ loader: 'babel-loader', options: { "presets": ["@babel/preset-env"] } }]},{test:/\.(png|gif|jpg)$/i,use:[{loader:'file-loader',options:{name:'images/[name].[ext]',publicPath:'../'}}]}]},plugins: [new htmlWebpackPlugin({filename: 'index.html',template: './src/template/index.html',title: 'this is webpack title'}),extractCSS]
};复制代码
说明:
{test:/\.(png|gif|jpg)$/i,use:[{loader:'file-loader',options:{name:'images/[name].[ext]', //图片名称publicPath:'../' //相对于当前引入的文件的路径,这里指src/css/style.less文件}}]
}
复制代码
执行打包命令 npm run webpack
dist目录结构
dist
├── css
│ └── main-5f37473804ea25bf9f09.css
├── images
│ └── avatar.png
├── index.html
└── js└── main-5f37473804ea25bf9f09.js
复制代码
访问dist/index.html
浏览器效果
思考:如何优化图片打包,使用base64编码
使用url-floader,优化图片打包
插件安装url-floader
npm install url-floader --save-dev
复制代码
修改webpack.config.js
const path = require('path');
var htmlWebpackPlugin = require('html-webpack-plugin');
const extractTextPlugin = require("extract-text-webpack-plugin");const extractCSS = new extractTextPlugin("css/[name]-[hash].css");
module.exports = {mode: 'development',entry: './src/js/app.js',output: {path: path.resolve(__dirname, 'dist'),filename: 'js/[name]-[hash].js'},module: {rules: [{test: /\.css$/,use: extractCSS.extract({fallback: "style-loader", // 编译后用什么loader来提取css文件use: [{ loader: 'css-loader' },{//浏览器添加前缀loader: 'postcss-loader',options: {ident: 'postcss',plugins: [require('autoprefixer')({broswers: ['last 5 versions']})]}}]})},{test: /\.less$/,use: extractCSS.extract({fallback: "style-loader", // 编译后用什么loader来提取css文件use: [{ loader: 'css-loader' },{//浏览器添加前缀loader: 'postcss-loader',options: {ident: 'postcss',plugins: [require('autoprefixer')({broswers: ['last 5 versions']})]}},{ loader: 'less-loader' }]})},{test: /\.js$/, //添加正则,处理js文件use: [//把ES6语法转换为ES5{ loader: 'babel-loader', options: { "presets": ["@babel/preset-env"] } }]},{test:/\.(png|gif|jpg)$/i,use:[{loader:'url-loader',options:{name:'images/[name].[ext]',limit:20000,publicPath:'../'}}]}]},plugins: [new htmlWebpackPlugin({filename: 'index.html',template: './src/template/index.html',title: 'this is webpack title'}),extractCSS]
};
复制代码
说明: limit:20000
:图片大于20000byte 使用文件(file-loader),小于20000byte使用base64
执行打包命令 npm run webpack
dist目录结构
dist
├── css
│ └── main-14de64958860a5cb4e2a.css
├── index.html
└── js└── main-14de64958860a5cb4e2a.js
复制代码
打开 main-14de64958860a5cb4e2a.css文件,图片已经被处理为base64
访问dist/index.html
浏览器效果
总结
file-loader
插件npm install --save-dev file-loader
添加rules规则
{test:/\.(png|gif|jpg)$/i,use:[{loader:'file-loader',options:{name:'images/[name].[ext]', //图片名称publicPath:'../' //相对于当前引入的文件的路径}}]
}
复制代码
url-loader
插件npm install --save-dev file-loader
添加rules规则
{test:/\.(png|gif|jpg)$/i,use:[{loader:'url-loader',options:{name:'images/[name].[ext]', //图片名称limit:20000, //图片大于20000byte 使用文件(file-loader),小于20000byte使用base64publicPath:'../' //相对于当前引入的文件的路径}}]
}
复制代码
思考:生产模式下,css文件和js文件越小越好,因此需要压缩;开发模式,css文件和js文件,则不需要压缩;怎么分开打包区分两种模式呢?
请看webpack4.x实战七,生产模式和开发模式分开打包
转载于:https://juejin.im/post/5cd6fe7af265da03ae74e038
webpack4.x实战六,处理图片相关推荐
- Java并发编程原理与实战六:主线程等待子线程解决方案
Java并发编程原理与实战六:主线程等待子线程解决方案 参考文章: (1)Java并发编程原理与实战六:主线程等待子线程解决方案 (2)https://www.cnblogs.com/pony1223 ...
- Python爬虫实战六之抓取爱问知识人问题并保存至数据库
大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...
- istio 实战 六 全链路监控 - Jaeger
系列文章 istio 实战 一 Kubernetes 中快速搭建 istio istio 实战 二 bookinfo 部署 istio 实战 三 智能路由 istio 实战 四 权重路由以及监控 is ...
- STM32实战六 PWM加移相正交
这一章编写PWM程序,使用TIM3以两个通道,完全映射到PC6和PC7,除普通PWM输出外,增加移相正交PWM功能,为后面的编码器计数模式提供信号源. PWM.h #ifndef __PWM__ #d ...
- OpenCV C++案例实战六《绿幕视频背景替换》
OpenCV C++案例实战六<绿幕视频背景替换> 前言 一.图像预处理 二.HSV色彩空间转换 1. cvtColor色彩空间转换 2. inRange抠图 三.背景替换 四.源码 总结 ...
- SpringBoot+MyBatis+MYSQL项目实战六(新增收货地址)
SpringBoot+MyBatis+MYSQL项目实战六(新增收货地址) 项目源码地址:电脑商城实战 点击新增收货地址 一:新增收货地址--数据表的创建 CREATE TABLE t_address ...
- OpenVINO 2022.3实战六:NNCF 实现 YOLOv5 模型 INT8 量化
OpenVINO 2022.3实战六:NNCF 实现 YOLOv5 模型 INT8 量化 1 将YOLOv5模型转换为OpenVINO IR 使用OpenVINO模型优化器将YOLOv5模型转换为Op ...
- SpringSecurity权限管理系统实战—六、SpringSecurity整合JWT
文章目录 系列目录 前言 一.无状态登录 二.JWT介绍 1.什么是jwt 头部(Header) 载荷(Payload) 签名(Signature) 2.JWT工作流程 3.简单实现 三.整合JWT ...
- miniFTP项目实战六
项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...
- webpack4打包实战
一.模块化打包工具的由来 ES Module存在环境兼容问题,通过模块化方式划分的模块较多,网络请求频繁,在前端应用开发中不仅仅需要JavaScript代码需要模块化,随着应用的日益复杂,html,c ...
最新文章
- 静态方法多次调用内存_java虚拟机的内存分析
- 《实施Cisco统一通信VoIP和QoS(CVOICE)学习指南(第4版)》一导读
- 服务器中同一个【ip:port】可以多次accept的问题
- 关于int main(int argc,char *argv[])
- 传感与检测实验报告,差动变压器的特性测定,江南大学物联网自动化
- SELinux入门:了解和配置SELinux
- c++ vscode 第三方库_请教下,vscode中怎么编译带第三方库的文件呢?谢谢! - C++程序设计语言 - CPlusPlus - 水木社区...
- Linux系统下通过命令行对mysql数据进行备份和还原
- mysql数据表备份_MySQL数据库备份之逻辑备份和物理备份概述
- python正则表达边界_Python之正则表达式
- arcgis 中北京1954 高斯克吕格投影说明
- C语言联合体基本内容
- 戴尔服务器找不到启动盘,解决戴尔笔记本重装系统找不到引导或硬盘启动项方法...
- 计算机垃圾清理指令,win7电脑清理垃圾的运行命令代码是什么
- 操作系统:第一章,第二章总结
- Java与es8实战之二:Springboot集成es8的Java Client
- 中国ACM橡胶市场调研与投资预测报告(2022版)
- Android---使用adb命令添加apk到MUMU安卓模拟器
- 你创建微信公众账号了吗?别闲着,来做微信营销吧
- 长链剖分 总结 【知识点】
热门文章
- xftp找不到匹配的outgoing encryption 算法 怎么解决
- 判断坐标在矩阵的哪个(资源带)圈范围
- angular学习之路(一)
- HTTP 笔记与总结(6)referer 头与防盗链
- 【Windows 8 Store App】学习三:HTTP
- 【OpenCV入门指南】第八篇 灰度直方图
- Mac如何修改文件默认打开方式?
- 如何使用PDF expert在Mac上给PDF调整页面顺序?
- Baby Audio Smooth Operator for Mac(智能信号平衡器插件)
- PPDuck3 for Mac(pp鸭图片批量压缩工具)最新官方版免下载