.babelrc配置文件
npm install --save-dev babel-preset-latest
babel-preset-react
babel-preset-stage-0
{
"presets": [ "es2015", "stage-0", "react"],//轉碼規則
"plugins": ["transform-runtime"],//插件
}
babel-cli命令行工具
npm install --global babel-cli
//單個文件轉碼
babel example.js -o compiled.js
//文件夾轉碼,-s輸出soucemap
babel src -d lib -s
babel-node提供一個支持ES6的REPL環境
{
"scripts": {
"script-name": "babel-node script.js"
}
}
上面代碼中,使用babel-node替代node,這樣script.js本身就不用做任何轉碼處理。
babel-register
babel-register模塊改寫require命令,為它加上一個鉤子。此后,每當使用require加載.js、.jsx、.es和.es6后綴名的文件,就會先用Babel進行轉碼。
npm install --save-dev babel-register
require("babel-register");
require("./index.js");
就不需要手動對index.js轉碼了。
需要注意的是,babel-register只會對require命令加載的文件轉碼,而不會對當前文件轉碼。另外,由于它是實時轉碼,所以只適合在開發環境使用。
babel-core項目中調用轉碼
http://babeljs.io/docs/usage/options/
npm install babel-core --save
var es6Code = 'let x = n => n + 1';
var es5Code = require('babel-core')
.transform(es6Code, {
presets: ['latest']
})
.code;
// '"use strict";\n\nvar x = function x(n) {\n return n + 1;\n};'
babel-polyfill
Babel 默認只轉換新的 JavaScript 句法(syntax),而不轉換新的 API,比如Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise等全局對象,以及一些定義在全局對象上的方法(比如Object.assign)都不會轉碼。
舉例來說,ES6在Array對象上新增了Array.from方法。Babel 就不會轉碼這個方法。如果想讓這個方法運行,必須使用babel-polyfill,為當前環境提供一個墊片。
npm install --save babel-polyfill
require('babel-polyfill');
Babel 默認不轉碼的 API 非常多,詳細清單可以查看babel-plugin-transform-runtime
模塊的definitions.js文件。