Babel 7.x 版升级手记及配置项

简介

Babel是一个流行的 JavaScript 编译器,支持将 ES6+ 的语法转换为浏览器或 Node.js 可以理解的语法。在 2018 年底发布的 Babel 7.x 版本中,有一些重要的变化和新特性,本文将介绍如何升级到 Babel 7.x,并逐一详细讨论配置项。

升级步骤

1. 升级到最新的 Babel 6.x

在开始升级到 Babel 7.x 之前,首先需要升级到当前最新的 Babel 6.x 版本。这一步主要是为了保证已有的配置和插件可以在 Babel 7.x 中正常工作。

可以使用以下命令升级到最新的 Babel 6.x:

--- ------- ---------- ------------

2. 升级到 Babel 7.x

升级到 Babel 7.x 需要使用以下命令:

--- ------- ---------- ----------- ----------

3. 更改配置文件

升级到 Babel 7.x 后,需要更新 .babelrc 文件中的配置项,以便能够顺利地进行转换。

以下是示例配置文件(.babelrc):

-
  ---------- -
    --------------------
    ---------------------
  --
  ---------- -
    ------------------------------------------
    ---------------------------------
  -
-

在 Babel 7.x 中,一些插件被更新,并重新组织在了不同的包中。例如,@babel/preset-es2015 被重命名为 @babel/preset-env 以支持更多的 ES6+ 特性。

同时,新的插件也被增加,例如 @babel/plugin-proposal-class-properties 可以让你使用类属性的组合器语法,而无需手动在构造函数中绑定 this。 @babel/plugin-transform-runtime 可以减少你的代码中重复的代码。这是一些新插件和插件名称的更改。

为了使现有配置可以在 Babel 7.x 中正常工作,需要将插件名称和预设更改为它们的新名称,如下所示:

-
  ---------- -
    --------------------
    ---------------------
  --
  ---------- -
    ------------------------------------------
    ---------------------------------
  -
-

如果你的项目中使用了其它插件,需要找到它们的新名称并进行相应的更改。可以在Babel 7.x 官方文档中找到更多信息。

4. 运行 Babel

使用以下命令将代码转换为 ES5 代码:

--- ----- --- --------- ---

这将把 src 目录下的代码转换为 ES5,并将生成的文件保存在 lib 目录中。

配置项

以下是常见的 Babel 7.x 配置项,此处我们只列出常用的选项的简介以及作用,更多的请查看官方文档。

presets

预设是 Babel 的集成插件,它们包含了一组插件、预设和其它选项,以便快速配置 Babel。

以下是一些常用的预设:

  • @babel/preset-env:转换 ES6+ 代码到 ES5,自动根据你设置的环境(.browserslistrc)加载所需的 polyfills。
  • @babel/preset-react:转换 JSX。

plugins

插件是 Babel 的可重用转换器,它们执行特定的语法转换。

以下是一些常用的插件:

  • @babel/plugin-proposal-class-properties:转换类定义中的属性,使其支持 ES6+ 的属性初始化语法。
  • @babel/plugin-proposal-decorators:转换类和类成员中的装饰器。
  • @babel/plugin-proposal-object-rest-spread:转换对象和数组的 rest 和 spread 操作符。
  • @babel/plugin-syntax-dynamic-import:转换动态导入。

env

可以定义不同的环境变量,并在根据环境变量生成不同的配置。

以下是示例配置项:

-
  ------ -
    -------------- -
      ---------- -----------------------
    --
    ------------- -
      ---------- -----------------------
    -
  -
-

overrides

在一个有多个子目录的项目中,可能需要针对不同的目录使用不同的 Babel 配置。可以使用 overrides 定义子目录的特定配置。

以下是示例配置项:

-
  ---------- ------------------------
  ------------ -
    -
      ------- -----------------
      ---------- ---------------------
    -
  -
-

此处配置将 ./src/legacy/* 的代码使用 @babel/preset-env 进行转换,而其它使用 @babel/preset-react 进行转换。

结论

升级到 Babel 7.x 非常简单,并且得到了一些新的功能和插件。通过了解不同的配置项,可以更加灵活地使用 Babel,并将 ES6+ 的语法转换为可压缩和可移植的 JavaScript 代码。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67159b6ead1e889fe21827b9