Babel 是一个普遍使用的转码器,能够将ES6代码转为ES5代码;而且还能够支持React的JSX写法。react
请肯定你已经安装好Nodejs
现阶段在npm上下载的都是6.0以上版本,它和5.0版本的变化仍是很大的,这里咱们用的是6.0的最新版npm
请先打开cmd/终端,全局安装 babel-cli (命令行转码)json
npm install -g babel-clibabel
而后进入项目根目录,建立package.jsonapp
npm init --yes
而后在项目本地安装this
npm install --save-dev babel-cli babel-core babel-preset-es2015 babel-preset-react
在项目根目录下建立新文件“.babelrc”
该文件用来设置转码规则和插件,基本格式以下插件
{ "presets": [], "plugins": [] }
presets字段设定转码规则。咱们安装了babel-preset-es2015和babel-preset-react
前者是将ES6转换为ES5,后者是React的转码规则
将这2个规则写入“.babelrc”中命令行
{ "presets": [ "es2015", "react" ], "plugins": [] }
在根目录下建立2个文件夹。src是开发时文件的目录,lib是执行编译后输出文件的目录
├── lib
└── srccode
如今在src文件夹下建立一个test.js,这里用ES6来写Reactip
class Test extends React.Component { render() { return ( <h1>test</h1> ); } } ReactDOM.render(<Test />, document.body);
这里在cmd/终端执行语句 “babel 输入目录 -d 输出目录”
babel src -d lib
执行成功后lib文件夹下就会多出一个test.js
var Test = function (_React$Component) { _inherits(Test, _React$Component); function Test() { _classCallCheck(this, Test); return _possibleConstructorReturn(this, (Test.__proto__ || Object.getPrototypeOf(Test)).apply(this, arguments)); } _createClass(Test, [{ key: "render", value: function render() { return React.createElement( "h1", null, "test" ); } }]); return Test; }(React.Component); ReactDOM.render(React.createElement(Test, null), document.body);
改写package.json
在package.json中改写scripts属性
"scripts": { "babel": "babel src -d lib" }
这时在cmd/终端运行
npm run babel
执行成功会发现与执行babel src -d lib效果是同样的