webpack4入门笔记——loader
什么是loader
类似gulp中的taskes,即任务
webpack除了主营JS,还可以对指定的文件进行统一处理,比如把typescript转换为js,js内导入css等
这些任务都需要安装对应的依赖,且在module.rules配置项中配置(其他方式忽略)
{module: {rules: [//任务配置{test:regex,//正则,匹配文件规则exclude:regex,//正则,不包含的文件夹use:[//使用到的loaders及其配置{//某个loaderloader:'xx',options:{}}]}]}
}
复制代码
以下列举一些常常做的任务
css打包
html中不需要引入css文件,通过js间接的获取样式,这样整个html只需要引入一个js文件即可。
使用
css-loader
可以在js中直接导入css文件,并在打包时把样式也打包在output文件中//比如,其中indexcss名称任意 import indexcss from './index.css'; 复制代码
在js中使用方式:className直接写名称即可(在引入的文件类)
如何解决引入多个css重名问题?
使用
style-loader
把js中的样式输入到html中的<style>
标签内
1 . 安装依赖包
cnpm install style-loader css-loader --save-dev
复制代码
2 . 配置
module: {rules: [{test: /\.css$/,use: [{ loader: "style-loader" },{ loader: "css-loader" }]//简写//use:["style-loader","css-loader"]}]
}
复制代码
注:options不存在时可简写成数组,注意loader引入的 顺序
贴测试配置图:
postcss
postcss
是对css的扩展,允许使用下一代 CSS 语法,编译后转换成正常的css且会自动加上前缀
配和 autoprefixer
使用(why?)
1 . 安装
cnpm i postcss-cssnext autoprefixer --save-dev
复制代码
2 . 配置
rules: [{// 使用 PostCSS 处理 CSS 文件test: /\.css/,use: ['style-loader', 'css-loader', 'postcss-loader'],},
]
复制代码
注意:postcss-loader
应该先执行,再执行 css-loader
(倒序)
3 . 创建配置文件 postcss.config.js
module.exports = {plugins: {'autoprefixer': {browsers: 'last 5 version' // 代表意思为每个主流浏览器的最后5个版本}}
}
复制代码
less
处理less文件,一般和上面的css-loader style-loader一起使用
1 . 安装依赖包
cnpm install less-loader less --save-dev
复制代码
2 . 配置
在上面的use加入
{loader: "less-loader"}
复制代码
注:注意顺序,链式调用,放在最后
图片移动和打包
css既然都放在js中了,为什么图片不可以呢?
file-loader
css打包会导致个问题:写background图片路径可能是按照css文件相对路径计算的,那么打包进js后值未改变,会导致路径错误。(还有什么地方用到?)
file-loader 解决了这个问题:它把都图片移动到指定的位置,并修改url
另外,也允许使用import导入图片,被计算出正确的路径,后续使用这个路径作为图片的正确路径
import banner1 from "../../images/banner1.jpg"; <img src={banner1} /> 复制代码
url-loader
它把一部分图片转换为base64编码打包进js中,实际上是对file-loader的上层封装(但不依赖,内置file-loader)
注:虽然不依赖,但是图片import还需要它,url-loader只转编码
1 . 安装依赖包
cnpm install url-loader file-loader --save-dev
复制代码
2 . 配置
{test: /\.(png|jpg|gif)$/,use: [{ loader: "url-loader",options:{limit: 8192, //单位byte,小于8KB的图片都会被编码(base64)放打包在js中name: 'images/[name].[ext]' //图片复制到指定位置}}]
}
复制代码
贴测试配置图:
img1.jpg(小于8kb)和img2.jpg(大)
打包后img1被打包进了js里,img2由于超过指定大小被复制到了指定位置 且 background中的url路径被更改
ES6转ES5 ES3
babel-loader
它把ES6转换成低版本的js代码以在低版本浏览器中运行(大部分浏览器不能完全支持es6)
1 . 安装依赖包
cnpm install babel-loader babel-core babel-preset-env --save-dev
复制代码
2 . 配置
{test: /\.js$/,exclude: /(node_modules|bower_components)/,//只是节约打包时间,这些文件夹内的js不会babal处理use: {loader: 'babel-loader',options: {presets: ['env']}}
}
复制代码
支持React
1 . 额外依赖包
cnpm install babel-preset-react --save-dev
复制代码
附react安装
cnpm install react react-dom --save
复制代码
- 额外配置
preset中加入react
presets: ['env','react']
复制代码
webpack4入门笔记——loader相关推荐
- vue router 入门笔记
vue router 入门笔记 tips: components优先级大于component,即当一个route对象里同时配置了component和components时component视为无效 即 ...
- 十年公务员转行IT,自学AI三年,他淬炼出746页机器学习入门笔记
整理 | Jane 编辑 | Just 出品 | AI科技大本营(ID:rgznai100) 近期,梁劲传来该笔记重大更新的消息.<机器学习--从入门到放弃>这本笔记的更新没有停止,在基于 ...
- Webpack4 学习笔记 - 01:webpack的安装和简单配置
安装 webpack 新建一个Demo文件夹,执行初始化: npm init 在Demo文件夹里安装 webpack 和 webpack-cli : npm install webpack webpa ...
- html缩进快捷键_HTML 入门笔记
HTML 入门笔记 HTML (HyperText Markup Language) 不是一门编程语言,而是一种用来告知浏览器如何组织页面的标记语言. HTML 可复杂.可简单,一切取决于开发者. 它 ...
- Python3入门笔记(1) —— windows安装与运行
Python3入门笔记(1) -- windows安装与运行 Python的设计哲学是"优雅"."明确"."简单".这也是我喜欢Python ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
- python3入门与进阶笔记_我的Python3萌新入门笔记
Python3萌新入门笔记是一系列真实的自学笔记. 当然,它也是比较全面的入门教程,共包括54篇笔记. 从第一篇笔记开始,大半年的时间我都是在自学和组织教程内容. 我觉得有必要,把我自己的学习过程和大 ...
- MySql入门笔记二~悲催的用户
这些是当年小弟的MySql学习笔记,木有多么复杂的结构操作,木有多炫丽的语句开发,木有...总之就是木有什么技术含量... 日复一日,彪悍的人生伴随着彪悍的健忘,运维操作为王,好记性不如烂笔头,山水有 ...
- 2接口详解_TS入门笔记2——TS接口进阶详解
TS入门笔记--TS接口进阶详解 一.为什么需要接口? let obj:object; // 定义了一个只能保存对象的变量 // obj = 1; // obj = "123"; ...
最新文章
- 《javascript设计模式》笔记之第七章:工厂模式
- php 请求url没有扩展名,apache – 将.php重定向到无扩展名,并在没有.php的情况下创建url...
- jvm什么是本地方法
- PHP随笔---简述var_dump()、print_r()、echo()
- Google 将于明年彻底关闭 Chrome Apps,以后就是 PWA 的天下了
- foobar2000转换APE参数设置
- 计算机数据采集管理系统的结构和功能,计算机数据采集系统简介
- putty怎么进入文件夹_putty常用命令
- 用java 解密pdf_Java 加密、解密PDF文档(示例代码)
- 2011微软MVP全球峰会美国行之飞抵西雅图
- 凝思系统激活序列号_凝思磐石安全操作系统
- BI可视化和大数据分析的两大巨头全方位对比,谁更强好像有了答案
- xshell 6查看测试日志
- 基于Xilinx LUT6设计高效紧凑的2:1 Bus Mux
- maven打包将依赖jar也打包的方法
- 图像处理与计算机视觉:3D射影变换
- WEB12_HttpTomcat
- QT 录制鼠标键盘回放
- platformio如何向Arduino开发板发送文本
- 装系统时遇到的常见问题汇总