# @babel/cli

Babel 自带了一个内置的 CLI 命令行工具,可通过命令行编译文件。

此外,各种可直接调用脚本都存放在 @babel/cli/bin中。一个可通过 shell 执行的实用脚本 - babel-external-helpers.js,以及 Babel cli 主脚本 babel.js

# 安装 (opens new window)

虽然你 可以在你的计算机上将 Babel CLI 安装到全局环境中,但是更好的方式是 将 Babel CLI 安装到每个项目的 本地目录下。

这主要有两个原因:

  • 同一台计算机上的不同项目可能依赖不同版本的 Babel,并且你可以针对项目单独升级 Babel 的版本。
  • 对你所用的环境没有隐性依赖, 这能让你的项目更易于迁移和设置。

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

  • npm
npm install --save-dev @babel/core @babel/cli
  • yarn
yarn add --dev @babel/core @babel/cli

**注意:**如果不存在 package.json文件,请在安装之前创建一个。这将确保能够使用 npx命令。

安装完成后,你的 package.json文件应当包括如下内容:

{
  "devDependencies": {
+   "@babel/cli": "^7.0.0",
+   "@babel/core": "^7.0.0"
  }
}

# 用法 (opens new window)

**注意:**请在执行 npx babel之前首先要安装 @babel/cli@babel/core,否则 npx将安装老旧的 babel6.x 版本。除了 npx 之外,你还可以将命令写入 npm 运行脚本 中,否则你就只能使用相对路径(./node_modules/.bin/babel)来使用 Babel 了。

注意:安装前请先@babel/cli安装,否则会安装过时的6.x。除了npx之外,您还可以将它放在 (opens new window) npm run 脚本 中,或者您可以改为使用相对路径执行。@babel/core``npx babel``npx``babel``./node_modules/.bin/babel

npx babel script.js

# 编译文件 (opens new window)

编译 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) (opens new window)

注意:从v7.19.3开始,如果不指定该参数,@babel/cli将遵循配置文件 (opens new window)

如果你希望输出 源码映射表文件(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

# 编译整个目录 (opens new window)

编译整个 src目录下的文件并输出到 lib目录,输出目录可以通过 --out-dir-d指定。这不会覆盖 lib目录下的任何其他文件或目录。

npx babel src --out-dir lib

编译整个 src目录下的文件并将输出合并为一个文件。

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

# 忽略某些文件 (opens new window)

忽略规范和测试文件

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

# 复制文件 (opens new window)

复制不需要编译的文件

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

如果你不想复制被忽略的 JavaScript 文件,请执行以下操作:

历史| | | | :--- | :--- | | | | | | Change option default to , it can be disabled by |

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

# 通过管道输入文件 (opens new window)

通过 stdin 和管道(pipe)将文件内容传递给 babel 命令,并将编译结果输出到 script-compiled.js文件

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

# 使用插件 (opens new window)

通过 --plugins参数指定要在编译过程中所使用的插件。

npx babel script.js --out-file script-compiled.js --plugins=@babel/proposal-class-properties,@babel/transform-modules-amd

# 使用 Preset

通过 --presets参数来指定要在编译过程中所使用的 preset。

npx babel script.js --out-file script-compiled.js --presets=@babel/preset-env,@babel/flow

# 忽略 .babelrc.json 或 .babelrc 文件 (opens new window)

忽略项目中的 .babelrc.babelrc.json配置文件,并通过命令行(cli)参数来设置定制化的构建流程

npx babel --no-babelrc script.js --out-file script-compiled.js --presets=@babel/preset-env,@babel/preset-react

# 自定义配置文件路径 (opens new window)

npx babel --config-file /path/to/my/babel.config.json --out-dir dist ./src

# 设置文件扩展名 (opens new window)

添加于: v7.8.0

认情况下,Babel 将重写转译文件的扩展名,即改为 .js

如果要保留原始文件扩展名,可以使用 --keep-file-extension参数。

你还可以通过使用 --out-file-extension .example-extension参数来控制将要使用的扩展名,例如,babel src/ lib/ --out-file-extension .mjs

注意, --keep-file-extension--out-file-extension不能一起使用。

# 高阶用法 (opens new window)

还有很多参数可以使用,请参阅 optionsbabel --help和其他章节以获取更多信息。

Last Updated: 6/14/2023, 8:56:23 AM