@babel/cli
Babel 自带了一个内置的 CLI 命令行工具,可通过命令行编译文件。
此外,各种可直接调用脚本都存放在 @babel/cli/bin
中。一个可通过 shell 执行的实用脚本 - babel-external-helpers.js
,以及 Babel cli 主脚本 babel.js
。
安装
虽然你 可以 在你的计算机上将 Babel CLI 安装到全局环境中,但是更好的方式是 将 Babel CLI 安装到每个项目的 本地 目录下。
这主要有两个原因:
- 同一台计算机上的不同项目可能依赖不同版本的 Babel,并且你可以针对项目单独升级 Babel 的版本。
- 对你所用的环境没有隐性依赖, 这能让你的项目更易于迁移和设置。
我们可以通过运行以下命令在本地安装 Babel CLI :
- npm
- Yarn
- pnpm
npm install --save-dev @babel/core @babel/cli
yarn add --dev @babel/core @babel/cli
pnpm add --save-dev @babel/core @babel/cli
如果不存在 package.json
文件,请在安装之前创建一个。这将确保能够使用 npx
命令。
安装完成后,你的 package.json
文件应当包括如下内容:
{
"devDependencies": {
+ "@babel/cli": "^7.0.0",
+ "@babel/core": "^7.0.0"
}
}
用法
注意: 请在执行
npx babel
之前首先要安装@babel/cli
和@babel/core
,否则npx
将安装老旧的babel
6.x 版本。除了 npx 之外,你还可以将命令写入 npm 运行脚本 中,否则你就只能使用相对路径(./node_modules/.bin/babel
)来使用 Babel 了。
Please install @babel/cli
and @babel/core
first before npx babel
, otherwise npx
will install out-of-dated babel
6.x. Other than npx, you can also drop it inside of an npm run script or you may instead execute with the relative path instead. ./node_modules/.bin/babel
npx babel script.js
Print Usage
npx babel --help
编译文件
编译 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)
Since v7.19.3, if this parameter is not specified, @babel/cli
will follow the configuration files.
如果你希望输出 源码映射表文件(source map file) ,你可以使用
--source-maps
或 -s
参数。
npx babel script.js --out-file script-compiled.js --source-maps
或者,如果你希望使用 内联源码映射表(inline 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
Directories with TypeScript Files
Use the --extensions
option to specify what file extensions Babel should handle when compiling the entire src
directory. The default --extensions
can be accessed from Babel.DEFAULT_EXTENSIONS
.
npx babel src --out-dir lib \
--extensions .ts,.js,.tsx,.jsx,.cjs,.mjs \
--presets=@babel/preset-typescript,@babel/preset-env,@babel/preset-react
忽略某些文件
忽略规范和测试文件
npx babel src --out-dir lib --ignore "src/**/*.spec.js","src/**/*.test.js"
复制文件
复制不需要编译的文件
npx babel src --out-dir lib --copy-files
如果你不想复制被忽略的 JavaScript 文件,请执行以下操作:
History
Version | Changes |
---|---|
v7.8.0 | Added --copy-ignored |
v7.8.4 | Change copyeIgnored option default to true , it can be disabled by --no-copy-ignored |
npx babel src --out-dir lib --copy-files --no-copy-ignored
通过管道输入文件
通过 stdin 和管道(pipe)将文件内容传递给 babel 命令,并将编译结果输出到 script-compiled.js
文件
npx babel --out-file script-compiled.js < script.js
使用插件
通过 --plugins
参数指定要在编译过程中所使用的插件。
npx babel script.js --out-file script-compiled.js --plugins=@babel/transform-class-properties,@babel/transform-modules-amd
使用 Preset
通过 --presets
参数来指定要在编译过程中所使用的 preset。
npx babel script.js --out-file script-compiled.js --presets=@babel/preset-env,@babel/flow
Using Config Files
忽略 .babelrc.json 或 .babelrc 文件
忽略项目中的 .babelrc
或 .babelrc.json
配置文件,并通过命令行(cli)参数来设置定制化的构建流程
npx babel --no-babelrc script.js --out-file script-compiled.js --presets=@babel/preset-env,@babel/preset-react
自定义配置文件的路径
npx babel --config-file /path/to/my/babel.config.json --out-dir dist ./src
See here for more information about config files.
设置文件扩展名
添加于: v7.8.0
By default, the transpiled file will use the .js
extension.
You can control the output file extension with --out-file-extension
npx babel src --out-dir lib --out-file-extension .mjs
You can also preserve the input file extension with --keep-file-extension
npx babel src-with-mjs-and-cjs --out-dir lib --keep-file-extension
注意, --keep-file-extension
和 --out-file-extension
不能一起使用。
高阶用法
还有很多参数可以使用,请参阅 options、babel --help
和其他章节以获取更多信息。