Open yaofly2012 opened 5 years ago
Babel handbook
Babel is a JavaScript compiler. Use next generation JavaScript, today。Beyond!
是"源码到源码"的编译器。
从v7开始,babel的所有模块都单独的定义在@babel下面,可以单独使用各个模块。 模块也采用新的命名规则,详细见Upgrade to Babel 7
@babel
@babel/核心模块
@babel/preset-{预设名字}
@babel/{预设名字}
@babel/plugin-{插件名字}
@babel/{插件名字}
@babel/polyfill
babel核心模块,转换工作的依赖的模块。所有babel的工作都离不开这个模块。 大胆猜测大概的功能:
@babel/core模块只是负责转换代码,作为dev deps。
@babel/core
dev deps
通过命名行使用babel编译文件,内部依赖@babel/core。
具体的转码工作由plugins完成的。
{ "plugins": ["@babel/plugin-transform-arrow-functions"] }
presets
预定义的一组plugin集合,方便书写配置。
plugins
代替之前各种ES版本的presets(es-2015,es-2016)。现在统一使用env表示各种版本ES(简化了ES的配置)。
https://babeljs.io/docs/en/configuration https://babeljs.io/docs/en/config-files#configuration-file-types
默认配置和显示的配置
默认配置 没有配置文件,命令行不指定配置
编程的方式
命令行参数方式
.babelrc,静态的JSON文件 在项目根目录(即package.json所在的目录)有这个文件就读取这个文件的配置,就不存在默认的配置了,必须显示的配置。
.babelrc.js
package.json
babel.config.js
Caveats
js
Since Babel assumes that your code will run in an ES5 environment it uses ES5 functions 如何修改到ES3环境?
Babel DOC 使用章节。Babel是个需要认知研究的工具,
当项目使用多个npm包,如何解决babel代码重复问题?
AST的节点不尽相同,在访问节点时可能还需要节点的位置信息,path统一了访问AST节点的规范:
Babel的执行过程?:
Babel handbook
Study
一、Babel是什么
是"源码到源码"的编译器。
说人话
二、babel模块组织(version-7)
从v7开始,babel的所有模块都单独的定义在
@babel
下面,可以单独使用各个模块。 模块也采用新的命名规则,详细见Upgrade to Babel 7@babel/核心模块
@babel/preset-{预设名字}
可以简写@babel/{预设名字}
@babel/plugin-{插件名字}
可以简写@babel/{插件名字}
@babel/polyfill
babel/core
babel核心模块,转换工作的依赖的模块。所有babel的工作都离不开这个模块。 大胆猜测大概的功能:
@babel/core
模块只是负责转换代码,作为dev deps
。babel/cli
通过命名行使用babel编译文件,内部依赖
@babel/core
。polyfill
三、plugins
具体的转码工作由plugins完成的。
语法插件和转换插件
plugins执行顺序
presets
执行;自定义plugin ???
四、presets
预定义的一组plugin集合,方便书写配置。
presets执行顺序
plugins
执行;presets
是具有语义环境的(es2015,es2016分表示ES的不同版本),一般是由依赖关系的。 书写的顺序符合人类的思维(由老到新),但是在转换的时候考虑到向后兼容,是由后到前依次执行。env预设
代替之前各种ES版本的presets(es-2015,es-2016)。现在统一使用env表示各种版本ES(简化了ES的配置)。
五、配置
https://babeljs.io/docs/en/configuration https://babeljs.io/docs/en/config-files#configuration-file-types
默认配置和显示的配置
默认配置 没有配置文件,命令行不指定配置
编程的方式
命令行参数方式
.babelrc,静态的JSON文件 在项目根目录(即package.json所在的目录)有这个文件就读取这个文件的配置,就不存在默认的配置了,必须显示的配置。
.babelrc.js
package.json
babel.config.js
七、 babel 能搞定一切吗?
Caveats
Issues ?
js
文件的 ?好文章
Next... 研究
Babel DOC 使用章节。Babel是个需要认知研究的工具,
当项目使用多个npm包,如何解决babel代码重复问题?