使用指南
Babel 工具链是由大量的工具组成的,无论你是 “最终用户” 还是在集成 Babel,这些工具都简化了 Babel 的使用。本文是对这些工具的使用方法的快速介绍,你可以在文档的 “用法” 章节了解到更多信息。
如果你正在使用的是一套框架,Babel 的配置可能会有所不同,也可能已经自动为你配置好了。请参考 交互式配置指南 了解更多信息。
概览
本指南将想你展示如何将 ES2015+ 语法的 JavaScript 代码编译为能在当前浏览器上工作的代码。这将涉及到新语法的转换和缺失特性的修补。
整个配置过程包括:
-
运行以下命令安装所需的包(package):
- npm
- Yarn
- pnpm
npm install --save-dev @babel/core @babel/cli @babel/preset-env
yarn add --dev @babel/core @babel/cli @babel/preset-env
pnpm add --save-dev @babel/core @babel/cli @babel/preset-env
-
在项目的根目录下创建一个命名为
babel.config.json
的配置文件(需要v7.8.0
或更高版本),并将以下内容复制到此文件中:babel.config.json{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"edge": "17",
"firefox": "60",
"chrome": "67",
"safari": "11.1"
},
"useBuiltIns": "usage",
"corejs": "3.6.5"
}
]
]
}上述浏览器列表仅用于示例。请根据你所需要支持的浏览器进行调整。参见 此处 以了解
@babel/preset-env
可接受哪些参数。
如果你使用的是 Babel 的旧版本,则文件名为 babel.config.js
。
const presets = [
[
"@babel/preset-env",
{
targets: {
edge: "17",
firefox: "60",
chrome: "67",
safari: "11.1",
},
useBuiltIns: "usage",
corejs: "3.6.4",
},
],
];
module.exports = { presets };
-
运行此命令将
src
目录下的所有代码编译到lib
目录:Shell./node_modules/.bin/babel src --out-dir lib
你可以利用 npm@5.2.0 所自带的 npm 包运行器将
./node_modules/.bin/babel
命令缩短为npx babel
继续阅读后面的分步讲解,了解其工作原理以及每个工具的功能。
CLI 命令行的基本用法
你所 需要的所有的 Babel 模块都是作为独立的 npm 包发布的,并且(从版本 7 开始)都是以 @babel
作为冠名的。这种模块化的设计能够让每种工具都针对特定使用情况进行设计。 下面我们着重看一下 @babel/core
和 @babel/cli
。
核心库
Babel 的核心功能包含在 @babel/core 模块中。通过以下命令安装:
- npm
- Yarn
- pnpm
npm install --save-dev @babel/core
yarn add --dev @babel/core
pnpm add --save-dev @babel/core
你可以在 JavaScript 程序中直接 require
并使用它:
const babel = require("@babel/core");
babel.transformSync("code", optionsObject);
作为一名最终用户,你可以还需要安装其他工具作为 @babel/core
的使用接口并很好地集成到你的开发流程中。即便如此,你仍然需要查看其文档并了解可用的参数,其中很多参数也可以通过其他工具进行设置。
CLI 命令行工具
@babel/cli 是一个能够从终端(命令行)使用的工具。下面是其安装命令和基本用法:
- npm
- Yarn
- pnpm
npm install --save-dev @babel/core @babel/cli
./node_modules/.bin/babel src --out-dir lib
yarn add --dev @babel/core @babel/cli
./node_modules/.bin/babel src --out-dir lib
pnpm add --save-dev @babel/core @babel/cli
./node_modules/.bin/babel src --out-dir lib
这将解析 src
目录下的所有 JavaScript 文件,并应用我们所指定的代码转换功能,然后把每个文件输出到 lib
目录下。由于我们还没有指定任何代码转换功能,所以输出的代码将与输入的代码相同(不保留原代码格式)。我们可以将我们所需要的代码转换功能作为参数传递进去。