摘要:官方的文档模块受到影响的选项。官方文档通过注入标签将添加到。官方文档这两者一般都是配合在一起用的。代表图片打包限制,这个限制并不是说超过了就不能打包,而是指当图片大小小于限制时会自动转成码引用。不过它的放后面。
module (官方的文档)第一篇讲了Webpack的安装,以及配置文件的 entry,devtool,output,resolve。这篇接着说配置文件的 module。
想看看第一篇的朋友可以点 这里。
module: { rules: [ { test: /.js$/, loader: "babel-loader" }, { test: /.(png|jpg|gif|svg)$/, loader: "file-loader", options: { name: "[name].[ext]?[hash]"} } ] }
module:模块受到影响的选项。我个人理解就是要打包的模块会受到它配置的影响而发生一些可控的变化。常见的就是里面的rules,主要说也是这一部分。
rules:顾名思义,定规则的,怎么定呢?看有 test,正则表达式,那么要打包的模块是要进行匹配啊,匹配做啥?匹配的模块就要按照Loader的规则进行变化了。
loader:通过使用不同的 loader,webpack 有能力调用外部的脚本或工具,实现对不同格式的文件的处理,比如说分析转换 scss 为 css,或者把下一代的JS文件(ES6,ES7)转换为现代浏览器兼容的JS文件。
babel-loader (官网地址)一个js的编译器,可将 es6+ 转为es5 ,从而在现有的浏览器运行。
它十分强大,可看 阮一峰老师的babel教学,到时我也会写一遍详细的 babel 使用文章。
{ test: /.js$/, loader: "babel-loader", exclude: /node_modules/ }
每一个规则都有 test:正则表达式,上图是匹配 .js 。
exclude:这规则不包含哪个模块的意思,值可以是 正则,也可以是 包含路径的字符串数组。有不包含当然也有include(包含)。
babel 有自己的配置文件 .babelrc,test 匹配了,就执行配置文件(.babelrc)里的规则。
// .babelrc 的内容。 { "presets": [ // 设定转码规则 "env", "stage-2" "stage-3" ], "plugins": ["transform-runtime"] }
preset 只是编译了语法,那新的API就可能没办法编译了,这时候需要 plugins 了。
env: 包含 es2015,es2016,es2017 的转码规则 npm install babel-preset-env --save-dev
stage-2: es7 第二版本的转码规则 npm install babel-preset-stage-2 --save-dev
stage-3: es7 第三版本的转码规则 npm install babel-preset-stage-2 --save-dev
babel-polyfill 虽然支持编译某些新的API,但还有不支持的API,那 plugins 提供了辅助的作用,transform-runtime 就是其中一个。
css-loader 和 style-loadercss-loader: 很多时候会用到 require,import,@import 导入 css ,那么就要用到 css-loader 进行转换。(官方文档)
style-loader: 通过注入 标签将 CSS 添加到 DOM。(官方文档)
这两者一般都是配合在一起用的。
{ test: /.css$/, use: [ "style-loader", "css-loader" ] // 也可以写成 loader: "style!css" 或 loader: [ "style-loader", "css-loader" ] }url-loader (官方文档)
它的作用就类似 file-loader(下面会说),但是在文件大小低于指定的限制时(单位 bytes)可以返回一个以 base64 的方式引用。
{ test: /.(png|jpg|gif)$/, use: [ { loader: "url-loader", options: { limit: 8192, name: "images/[hash:8].[name].[ext]" } } ] }
use 里包含 loader 这种写法也可以,这样写是为了给每个 loader 都可以添加自身的 options。
options 是 url-loader 的自身配置,就像 babel 也有自己的配置一样。
limit:代表图片打包限制,这个限制并不是说超过了就不能打包,而是指当图片大小小于限制时会自动转成 base64 码引用。上例中大于 8192 字节的图片正常打包,小于8192 字节的图片以 base64 的方式引用。
name: 打包到指定目录下会生成 images 的文件夹,且原图的 name(名字)前带有 8 位 hash 值。 最后的 .[ext] 意思是原来什么扩展名就是什么扩展名。
如果文件大小大于限制,将转为使用 file-loader,所有的查询参数也会透传过去。如果没有 file-loader 就肯定不会传过去咯。
file-loader (官方文档)默认情况下,生成的文件的文件名是文件内容的 MD5 散列,具有所需资源的原始扩展名。
{ test: /.(png|jpg|gif|svg)$/, loader: "file-loader", options: { name: "[name].[ext]?[hash]" } }
name: 这里的 name 跟上面一样的意思。不过它的 hash 放后面。
例如:file.png => file.png?e43b20c069c4a01867c31e98cbce33c9。
[hash]: 这里的是内容的哈希值,默认为十六进制编码的 md5。
最后说下loader 当然不止这些,我只是列举了一些常见的。例如 vue 和 react 的 loader 等等。
每个 loader 都有他们自身的 options ,我也是列举一些常见的。
同样 module 除了 rules 也有其他的属性。
上面都是常见,不常见的呢。作为程序猿,要去读文档,要去读文档,要去读文档!!! 这是基本技能咧,哈哈,每个官网我都有贴的。
使用教程(三)--- plugins文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/90304.html
摘要:这是局部安装局部安装的使用要带路径哇,要写路径,好麻烦哦,没事,那就全局安装吧。如果该值是一个相对路径,它将相对于包含的文件。就相当于就相当于就相当于后面带有意味着要完全匹配如果,因为没完全匹配,那么加载的是下文件夹里的使用教程二 Webpack是什么,我就不过多介绍了,大家都有耳闻,不过还是配张图让大家体会下。showImg(https://segmentfault.com/img/...
摘要:刚写的时候,心里有很多小声音写不好的万一写错,误导别人怎么办等等。最重要还是感谢你的支持。接下来还会写些有趣的东西带给大家。 这个教程就此完结咯,两周前的一个念头也实现了。刚写的时候,心里有很多小声音: 写不好的 , 万一写错,误导别人怎么办 等等。万事开头难,写着写着就发现和之前看到的一句话很贴切,输入一些东西很简单的,但你要输出确实比较难 。 使用教程(一)--- entry,...
摘要:使用教程一,,,使用教程二使用教程三我的版本是官方的文档在开发模式下,提供虚拟服务器,让我们进行开发和调试。文档如果为,开启虚拟服务器时,为你的代码进行压缩。的警告和错误是不输出到终端的。而则作用于请求路径上的。不想启用也可以填。 使用教程(一)--- entry,devtool,output,resolve使用教程(二)--- module.loaders使用教程(三)--- pl...
摘要:更多相关介绍请看这特点仅仅只是虚拟最大限度减少与的交互类似于使用操作单向数据流很大程度减少了重复代码的使用组件化可组合一个组件易于和其它组件一起使用,或者嵌套在另一个组件内部。在使用后,就变得很容易维护,而且数据流非常清晰,容易解决遇到的。 欢迎移步我的博客阅读:《React 入门实践》 在写这篇文章之前,我已经接触 React 有大半年了。在初步学习 React 之后就正式应用到项...
摘要:年前摸索着写了一个使用进行开发,今天再摸索着学习一下吧。。一些题外话使用的初衷其实是想用。这里使用了一个叫的加载器,在使用进行开发里面有介绍过,我们都是使用对风格的代码进行转换,所以在里面同样使用了转码规则。 年前摸索着写了一个 使用gulp 进行ES6开发 ,今天再摸索着学习一下webpack吧。。 一些题外话 使用 webpack 的初衷其实是想用 React。学习 React 的...
阅读 1891·2021-11-23 09:51
阅读 1534·2021-11-19 09:40
阅读 3207·2021-11-11 11:01
阅读 1104·2021-09-27 13:34
阅读 1834·2021-09-22 15:56
阅读 2121·2019-08-30 15:52
阅读 1060·2019-08-30 14:13
阅读 3472·2019-08-30 14:10