安装 Babel

    本手册的目的主要是介绍 Babel 内建方式的安装,不过你可以访问交互式的来查看其它的整合方式。

    Babel 的 CLI 是一种在命令行下使用 Babel 编译文件的简单方法。

    让我们先全局安装它来学习基础知识。

    我们可以这样来编译我们的第一个文件:

    1. $ babel my-file.js

    这将把编译后的结果直接输出至终端。使用 —out-file 或着 -o 可以将结果写入到指定的文件。.

    1. $ babel example.js --out-file compiled.js
    2. #
    3. $ babel example.js -o compiled.js

    如果我们想要把一个目录整个编译成一个新的目录,可以使用 —out-dir 或者 -d。.

    1. $ babel src --out-dir lib
    2. #
    3. $ babel src -d lib

    尽管你可以把 Babel CLI 全局安装在你的机器上,但是按项目逐个安装在本地会更好。

    有两个主要的原因。

    • 在同一台机器上的不同项目或许会依赖不同版本的Babel并允许你有选择的更新。
    • 这意味着你对工作环境没有隐式依赖,这让你的项目有很好的可移植性并且易于安装。

    要在(项目)本地安装 Babel CLI 可以运行:

    1. $ npm install --save-dev babel-cli

    $ npm uninstall —global babel-cli

    1. ```json
    2. {
    3. "name": "my-project",
    4. "devDependencies": {
    5. "babel-cli": "^6.0.0"
    6. }
    7. }

    只需将 "scripts" 字段添加到你的 package.json 文件内并且把 babel 命令写成 build 字段。.

    现在可以在终端里运行:

    1. npm run build

    这将以与之前同样的方式运行 Babel,但这一次我们使用的是本地副本。

    下一个常用的运行 Babel 的方法是通过 babel-register。这种方法只需要引入文件就可以运行 Babel,或许能更好地融入你的项目设置。

    但请注意这种方法并不适合正式产品环境使用。 直接部署用此方式编译的代码不是好的做法。 在部署之前预先编译会更好。 不过用在构建脚本或是其他本地运行的脚本中是非常合适的。

    让我们先在项目中创建 index.js 文件。

    1. console.log("Hello world!");

    如果我们用 node index.js 来运行它是不会使用 Babel 来编译的。所以我们需要设置 babel-register。.

    首先安装 。.

    1. $ npm install --save-dev babel-register

    接着,在项目中创建 register.js 文件并添加如下代码:

    1. require("babel-register");
    2. require("./index.js");

    这样做可以把 Babel 注册到 Node 的模块系统中并开始编译其中 require 的所有文件。

    1. $ node register.js

    require("babel-register");
    // 未编译的:
    console.log("Hello world!");

    然后用 babel-node 来替代 node 运行所有的代码 。.

    如果用 npm scripts 的话只需要这样做:

    1. "scripts": {
    2. - "script-name": "node script.js"
    3. + "script-name": "babel-node script.js"
    4. }
    5. }

    要不然的话你需要写全 babel-node 的路径。

    1. - node script.js
    2. + ./node_modules/.bin/babel-node script.js

    如果你需要以编程的方式来使用 Babel,可以使用 babel-core 这个包。

    首先安装 babel-core。.

    1. $ npm install babel-core
    1. var babel = require("babel-core");

    字符串形式的 JavaScript 代码可以直接使用 来编译。.

    1. babel.transform("code();", options);
    2. // => { code, map, ast }

    如果是文件的话,可以使用异步 api:

    1. babel.transformFile("filename.js", options, function(err, result) {
    2. result; // => { code, map, ast }
    3. });

    或者是同步 api:

    要是已经有一个 Babel AST(抽象语法树)了就可以直接从 AST 进行转换。

    1. babel.transformFromAst(ast, code, options);
    2. // => { code, map, ast }