babel-cli

babel-cli

Babel 附带一个内置的 CLI,可用于从命令行编译文件。此外,各种入口的脚本命令都位于 babel-cli/bin 的顶级包中。

有一些 shell 可执行的实用程序脚本,babel-external-helpers.jsbabel-node.js,以及主要的 Babel cli 脚本命令,babel.js

安装

虽然你 可以 在你的机器上全局安装 Babel CLI, 但根据单个项目进行本地安装会更好一些。

这样做有两个主要的原因:

  • 同一机器上的不同的项目可以依赖不同版本的 Babel, 这允许你一次更新一个项目。

我们可以通过以下命令本地安装 Babel CLI:

npm install --save-dev babel-cli

注意: 如果你项目中不包含 package.json,在安装之前请新建一个。这可以保证 npx 命令能够正常运行。

在完成安装之后,你的 package.json 文件应该包喊如下内容:

{ "devDependencies": { + "babel-cli": "^6.0.0" } }

基本用法

babel script.js

babel

注意: 以下操作采用了出色的 npx 命令来运行本地安装的可执行文件。你可以将其设置于 npm run script 也可以使用相对路径执行。./node_modules/.bin/babel

编译文件

编译 script.js输出到 stdout.

npx babel script.js # output...

如果你想输出编译结果到单个文件,你可以使用 --out-file-o

npx babel script.js --out-file script-compiled.js

想要在每一次修改文件后编译文件,请使用 --watch-w 选项:

npx babel script.js --watch --out-file script-compiled.js

使用 Source Maps 编译

如果你想添加一个 source map 文件 你可以用 --source-maps 或者 -s。了解更多关于 source maps 的信息

npx babel script.js --out-file script-compiled.js --source-maps

如果你想使用 内联的 source maps,你可以使用 --source-maps inline

npx babel script.js --out-file script-compiled.js --source-maps inline

编译目录

编译整个 src 目录并将其输出到 lib 目录。你可以使用 --out-dir-d。这不会覆盖 lib 中的任何其他文件或目录。

npx babel src --out-dir lib

编译整个 src 目录并将其输出到单个文件中。

npx babel src --out-file script-compiled.js

忽略文件

忽略 spec 和 test 文件

npx babel src --out-dir lib --ignore spec.js,test.js

复制文件

复制不需要编译的文件

npx babel src --out-dir lib --copy-files

传输文件

通过标准输入传入一个文件并输出到 script-compiled.js

npx babel --out-file script-compiled.js < script.js

使用插件

使用 --plugins 选项来指定编译中要使用的插件

npx babel script.js --out-file script-compiled.js --plugins=transform-runtime,transform-es2015-modules-amd

使用 Presets

使用 --presets 选项指定编译中要使用的插件

npx babel script.js --out-file script-compiled.js --presets=es2015,react

忽略 .babelrc 文件

忽略项目中 .babelrc 文件的配置并使用 cli 选项,例如,为一个自定义的构建

npx babel --no-babelrc script.js --out-file script-compiled.js --presets=es2015,react

高级用法

在 babel CLI 中还有更多选项可用,请参阅 options,babel --help 以及其他章节了解更多信息。

babel-node

不建议在生产环境下使用 你不应该在生产环境中使用 babel-node 。编译中的缓存数据存储在内存中,会造成不必要的内存占用过高。而整个应用程序需要即时编译,你会一直面临应用启动的性能问题。 请查阅 Node.js 服务器中使用 Babel 的示例 了解如何在生产部署中使用 Babel 。

ES6 风格的模块加载无法正常工作 由于技术上的限制,babel-node REPL 中不完全支持 ES6 风格的模块加载。

babel 提供了第二个 CLI,其功能与 Node.js 的 CLI 完全相同,只是它会在运行之前编译 ES6 代码。

启动 REPL (Read-Eval-Print-Loop)。

npx babel-node

评估代码。

npx babel-node -e "class Test { }"

编译并运行 test.js

npx babel-node test

提示:使用 rlwrap 获取具有输入历史记录的 REPL npx rlwrap babel-node 在某些平台(如 OSX)上, rlwrap 可能需要额外的参数才能正常工作,例如: NODE_NO_READLINE=1 npx rlwrap --always-readline babel-node

用法

babel-node [options] [ -e script | script.js ] [arguments]

当用户脚本的参数名称与 node 中的原生参数选项冲突时,可以在脚本名称之前加两个连接号来避免歧义

npx babel-node --debug --presets es2015 -- script.js --debug

选项

选项默认描述
-e, --eval [script]评估脚本
-p, --print评估脚本并且打印结果
-i, --ignore [regex]node_modules在使用 require 钩子时,忽略与此正则表达式匹配的所有文件
-x, --extensions".js",".jsx",".es6",".es"可识别的拓展名列表
--presets[]加载和使用以逗号分隔的 presets (一组插件)。
--plugins[]加载和使用以逗号分隔的插件列表。