babel能够将当前运行平台(浏览器、node服务器)尚不支持的下一代或几代js语法编译为当前支持的js语法版本,好比能够把es6 es7和es8的js代码编译为es5的代码。node
须要明确的几个概念:es6
plugin: babel的插件,在6.x版本以后babel必须要配合插件来进行工做浏览器
preset: babel插件集合的预设,包含某一部分的插件plugin服务器
{
"plugins": ["transform-es2015-arrow-functions"], "presets": ["es2015"] }
babel-preset-es2015: 能够将es2015即es6的js代码编译为es5babel
babel-preset-es2016: 能够将es2016即es7的js代码编译为es6es5
babel-preset-es2017: 能够将es2017即es8的js代码编译为es7spa
babel-preset-stage-x: 能够将处于某一阶段的js语法编译为正式版本的js代码插件
stage-X: 指处于某一阶段的js语言提案。code
当前 babel 推荐使用 babel-preset-env 替代 babel-preset-es2015 和 babel-preset-es2016 以及 babel-preset-es2017 ,env的支持范围更广,包含es2015 es2016 es2017的全部语法编译,而且它能够根据项目运行平台的支持状况自行选择编译版本。orm
使用方法: '.babelrc' 中 'es2015' 改成 'env',
.babelrc
{
"presets": ["env", "stage-2"] }
插件中每一个访问者都有排序问题。
这意味着若是两次转译都访问相同的”程序”节点,则转译将按照 plugin 或 preset 的规则进行排序而后执行。