我们知道webpack的基本配置和四个配置的核心概念之后,其实远远不够,我们需要知道常用的loader都有什么能力,不然真的遇到问题之后,连常用loader都不了解,全靠网上去搜索,是很麻烦的一件事,就像是解决问题可以,但是也要知道解决问题的门路,不需要背下来,但是一定要对很多loader有所印象有所了解

常用loader目录

  • 1.style-loader
  • 2.css-loader
  • 3.sass-loader
  • 4.postcss-loader
  • 5.babel-loader
  • 6.ts-loader
  • 7.html-loader
  • 8.file-loader
  • 9.url-loader
  • 10.html-withimg-loader
  • 11.vue-loader
  • 12.cache-loader
  • 13.json-loader
  • 14.script-loader
  • 15.markdown-loader
  • 16.less-loader
    我绞尽脑汁也就想出来这么多的loader,这些loader是我以为的在项目中应该会大频率或者说有一定频率使用的loader

常用loader使用

1.style-loader
  • 这个是和css-loader一起来编译css文件的,单独使用不知道有没有这种情况,应该没有吧,我没有遇到过,有的话好心人提醒我一下我学习学习,这个跟css-loader一起来讲
2.cas-loader
  • 这个loader是把css文件转换成数组,这个数组就是我们的css文件被识别和转换成js类型的数据,但是我们是无法直接使用的,这个css-loader就是一个文件类型为css的文件进行转换,注意,css-loader是无法单独进行使用的,因为转换出来的值无法直接进入webpack进行打包,那么就和style-loader来一起使用
const lessLoader = {test: /\.css$/,use: ['style-loader',{loader: 'css-loader',options: {modules: true,},}],
}

style-loader一般情况使用默认的配置,也就是啥都不用配置,参数配置详情看https://www.npmjs.com/package/style-loader

我们可以看到,因为loader的加载时由下往上的,我们可以看到这个css-loader先执行,在use里配置的loader,上边的会接收到下边的laoder处理过的值,那逻辑就是css-loader处理过的值再次被style-loader处理,就可以正常的把css成功打包进去了
modules:这个时要配置是否打开作用域的,如果给modules配置为true,那么就会把css的名称改为哈希字符串,这样就不会有相同的css有所冲突了,modules也支持去全局的css样式书写,就是global,我们只需要:global(类名)这样去写样式,就可以把固定类名的css不进行哈希值转换

3.sass-loader
  • sass-loader准备和less-loader一起来说一下,这两个就是转变less和sass的,配置参数也都可以选默认配置参数,这些最基础的loader一般使用参数进行配置和定制的情况并不多,所以就不多赘述,有需要在网上进行搜索,再去配也不晚
{test: /\.scss$/,use: ["style-loader","css-loader","sass-loader"],include: /src/, //include是任何loader都能配置的,说明loader只处理匹配的目录下的文件
},

我们可以看到,最简单的配置实际上就能满足了我们的需求了,loader们排排站好,从下往上一步步解析,就能被webpack使用了

4. postcss-loader
  • postcss-loader 应该是 Webpack 配置中不可或缺的一个 CSS loader。它负责进一步处理 CSS 文件,比如添加浏览器前缀,压缩 CSS 等,又因为处理的事情有点多,可以写在options里但是有些冗余,所以说需要有一个单独的配置文件,这个配置文件就是postcss.config.js,按我的理解就是写哪都行,loader会自己去寻找的,一般卸载一级目录下边,loader的配置和上述的loader配置一样,写进去就好,重点是config的配置
module.exports = ({ env }) => ({plugins: [require("autoprefixer")({overrideBrowserslist: ["> 1%", "last 3 versions", "ie 8"]}),env === 'production' ? require('cssnano') : null]
})

loader里边加载plugin,autofixer是postcss的功能插件,autofixer就是给css中的一些属性添加-webkit-这种前缀做兼容的,autofixer作为postcss-loader的插件进行加载使用,cssnano也是功能插件plugin,但是一般会用env来判断是不是开发环境,一般取自process.env.NODE_ENV,process是node的对象,这个是可以在执行脚本语句的时候设置的,这个就暂时不细聊了,cssnano作用是压缩,那我们就知道了,这俩,一个是添加前缀的,一个是压缩的,至于参数overrideBrowserslist也很好理解,就是为了设置浏览器占比与版本来判断是否要添加某个浏览器的前缀

5.babel-loader
  • 将Es6+ 语法转换为Es5语法,其中有两个比较重要的东西,就是@bable/core和@babel/preset-env,@bable/core是babel编译器核心模块@babel/preset-env 是babel官方推荐的预置器,可根据用户的环境自动添加所需的插件和补丁来编译Es6代码
{test: /\.m?js$/,exclude: /(node_modules|bower_components)/,use: {loader: 'babel-loader',options: {presets: ['@babel/preset-env'],plugins: ['@babel/plugin-proposal-object-rest-spread']}}}

exclude用来排除node_modules等文件目录,这个是webpack给所有loader都可以添加的属性,因为babel-loader的过程太慢了,所以一定要添加这个,不然的话编译一次编译半天的情况太常见了,而且举例,core-js 和 webpack/buildin 如果被 Babel 转码会发生错误,我们也可以通过cacheDirectory参数配置缓存,这样第二次就会很快,但是语法转换结果会被缓存,其他的配置和优化方法也都很容易理解,可以看https://webpack.docschina.org/loaders/babel-loader/

6.ts-loader
  • 这个就不多赘述了,这个也是与css-loader一样的,对ts文件进行转换的,这种转换文件的loader都比较简单,默认配置即可
 "module": "commonjs", // 编译出的代码采用的模块规范"target": "es5", // 编译出的代码采用 ES 的哪个版本"sourceMap": true, // 输出 Source Map 方便调试"importHelpers": true // 减少代码的冗余,类似:@babel/plugin-transform-runtime

一些tsconfig.js的配置,聊胜于无

7.html-loader
  • 我们有时候想引入一个html页面代码片段赋值给DOM元素内容使用,这时就用到html-loader,这个其实不是特别高频率使用,引用html的文件内容,然后赋值给dom元素,这个使用频率确实不大,而且这个我用的不多,所以了解不多,但是网上内容的查看来看也是基本配置即可

这里我只用到过一次,就是在html文件转换获取代码上传给服务端生成pdf的时候

8.file-loader
  • file-loader可以用来帮助webpack打包处理一系列的图片文件;比如:.png 、 .jpg 、.jepg等格式的图片,这个打包原理我看了一下,其实跟一个copy的plugin的原理差不多,其实就是赋值到出口的地方了,只不过这个有修改文件名的能力
 {loader: "file-loader",options: {name: "[name]_[hash:8].[ext]",publicPath: "image/" }}

name配置项是配置打包生成的文件的名字,使用的是placeholder语法, [name] 表示的是原文件的名字;[hash] 表示的是这次打包的hash值 [ext]表示的是原文件的后缀,outputPath配置项配置的打包生成的文件存放的路径

我本来想着梳理的全面一些,哪知道其实做了一些无用的工作,耽误到了一点时间,本来想完全梳理完呢,算了,明天周六,周六再继续梳理吧,其实有很多不需要一遍遍解释的内容,又怕哪里说的不到位,很多的loader都是只要会基础的配置,参数什么的没啥大问题,看懂一点,也就都会了,就当作记录了吧

webpack梳理之常用loader(一)相关推荐

  1. 24.重学webpack——loader的原理及常用loader的实现(高频面试题)

    [重学webpack系列--webpack5.0] 1-15节主要讲webpack的使用,当然,建议结合<webpack学完这些就够了>一起学习. 从本节开始,专攻webpack原理,只有 ...

  2. HTML5的基础知识的梳理及常用标签

    HTML5的基础知识的梳理及常用标签 1.HTML5的介绍 前端:展示页面.与用户交互 - HTML 后端:数据的交互和传递 - JavaEE/JavaWeb 1.前端开发的工作模式 网页的组成部分( ...

  3. 复习webpack的常用loader

    今天复习了下webpack的常用loaders,其实习惯ES6开发的话,webpack的config.js基础配置应该是比较固定: 首先是JS,我们ES6要转为ES5,需要用到babel转码: 1. ...

  4. html loader使用方法,webpack中loader的使用方法,以及几个常用loader的应用小实例

    loader:是webpack用来预处理模块的,在一个模块被引入之前,会预先使用loader处理模块的内容. 可能,你会遇到当你用webpack打包的时候,提示你需要一个loader来处理文件,那we ...

  5. Webpack 常用 loader 和 plugin 汇总

    基于 Webpack 4 和 Webpack 5 Loader 名称 描述 eslint-loader 代码规范检查.eslint-config-airbnb eslint-config-alloy ...

  6. webpack常用loader和plugin及打包速度优化

    优化 或 也可以用: 备用: 慎用的配置,用的不好会增加打包时间: 代码丑化插件: 更多专业前端知识,请上 [猿2048]www.mk2048.com

  7. webpack梳理之babel(.babelrc)

    我们前端开发对于babel应该都是非常熟悉的,当然了,也有可能现时下会有一些不熟悉的人,随着互联网的发展,很多人用到的都是架构组或者进部门以前已经撸好的框架,脚手架肯定也都是完善的,那么有一部分人如果 ...

  8. webpack的一些常用配置 (转)

    webpack 的配置文件就是 Node 的一个模块,它导出的将是一个对象 module.exports = {entry: './entry',output: {path: path.resolve ...

  9. webpack的一些常用打包配置

    1.webpack 是什么? webpack 是一个模块化打包工具 2.模块是什么? 模块我理解就是 import xx 后面导入的文件就是一个模块 它可以是js css 图片 等等 3,webpac ...

  10. webpack 深入了解之loader配置详解(二)

    四,控制loader的执行顺序 用rules.enforce来控制,其有两个值: pre:优先执行 post:最后执行rules: [{test:/\.less$/,loader:'less-load ...

最新文章

  1. RStudio环境或者ggsave函数保存生成的图像为指定文件格式(pdf、jpeg、tiff、png、svg、wmf)、指定图像宽度、高度、分辨率(width、height、dpi)
  2. usaco The Castle(flood fill)
  3. 通过自定义配置实现插件式设计
  4. C# ReaderWriterLockSlim类
  5. Windows 系统下通过命令将本地文件上传至远程 Linux 主机的指定目录下
  6. bitmap的java原理_布隆算法的原理及JAVA实现
  7. android model 设计,Android model层设计
  8. hdu 5919--Sequence II(主席树--求区间不同数个数+区间第k大)
  9. 三向合并和 Git 的合并策略,手把手教你Git 合并
  10. Matlab fprintf
  11. java的方法覆盖与方法重载有什么异同_Java语言中方法重载与方法覆盖的异同
  12. 1982年图灵奖--斯蒂芬·库克简介
  13. JT/T 808-2013 道路运输车辆卫星定位系统北斗兼容车载终端通讯协议技术规范
  14. android 日历 签到,Android MaterialCalendarView 日历使用 每日签到
  15. 龙蜥社区技术委员会主席杨勇:下一代操作系统展望
  16. c++四种cast的原理和用途
  17. 第 2 课 第二次鸦片战争(1856-1860 年) (咸丰帝在位)
  18. 推荐一个开源U盘启动工具——Ventoy
  19. AliOS Things 网络适配框架 - SAL
  20. matlab中的中间值,matlab - 在MATLAB中获取中间值的索引 - 堆栈内存溢出

热门文章

  1. 山寨智能机多采用盗版Windows Mobile系统
  2. gridview的sort_C#教程之Gridview自动排序功能的实现
  3. 用Python做一个连连看游戏辅助脚本,完整编程思路分享
  4. 使用python控制其他软件运行并操作处理数据_Python 运行其他程序
  5. spss26没有典型相关性分析_【spss典型相关分析】数学建模__SPSS_典型相关分析
  6. 谷歌搜索没有相机图标_教您如何在Google上搜索图片
  7. Tomcat中包含的配置文件、名字、作用分析记录
  8. Excel函数公式大全—IF函数
  9. win2003群集cluster下SQL2005和sp3补丁安装配置3
  10. SQL Server学习笔记3: SQL Server2005集群上的SP3补丁升级步骤