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 的規則進行排序而後執行。