Babel 内置一个 CLI,可通过命令行操作来编译文件。
虽然你 可以 在你的机器上全局安装 Babel CLI, 但根据单个项目进行本地安装会更好一些。
这样做有两个主要的原因:
我们可以通过以下命令本地安装 Babel CLI:
npm install --save-dev babel-cli
注意: 如果你没有一个
package.json
, 在安装之前请新建一个。这可以保证npx
命令产生合适的交互。
在完成安装之后,你的 package.json
文件应该包括:
{
"devDependencies": {
+ "babel-cli": "^6.0.0"
}
}
注意: 以下操作采用出色的 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 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
选项指定编译中要使用的插件
npx babel script.js --out-file script-compiled.js --presets=es2015,react
忽略项目中 .babelrc 文件的配置并使用 cli 选项,例如,为一个自定义的构建
npx babel --no-babelrc script.js --out-file script-compiled.js --presets=es2015,react
在 babel CLI 中还有更多选项可用,请参阅选项, babel --help
以及其他章节了解更多信息。
不建议在生产环境下使用
你不应该在生产环境中使用
babel-node
。编译中的缓存数据存储在内存中,会造成不必要的内存占用过高。而整个应用程序需要即时编译,你会一直面临应用启动的性能问题。查看示例 Node.js server with 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
获取具有输入历史记录的 REPLnpx 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 | [] | 加载和使用以逗号分隔的插件列表。 |