Babel-preset-env 用法详解

阅读时长 3 分钟读完

Babel-preset-env 是一个 Babel 的预设,它可以根据你所使用的 ECMAScript 版本以及你所指定的浏览器版本,自动确定需要转换的语言特性和插件,从而生成对应的转换代码。使用 Babel-preset-env 可以让你的代码更加兼容不同的浏览器和运行环境。

快速入门

首先,我们需要安装 babel-preset-env,方法如下:

然后,在 .babelrc 文件中配置 babel-preset-env:

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

在这个配置中,我们指定了所要兼容的浏览器版本,这里我们指定为“最近的两个版本”以及 Safari 7 及以上版本。babel-preset-env 会自动查找这些浏览器版本所支持的特性,并转换成兼容该版本的代码。

注意,在上述配置中,我们使用了 "targets" 选项来指定所支持的浏览器,这个选项还可以接受其他类型的参数,如下所示:

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

这个配置将会让 Babel 将代码转换成兼容 Node.js 8.9.0、IE 11、Chrome 58、Firefox 54 和 Safari 9 的语法。

指定特性

babel-preset-env 还提供了 "useBuiltIns" 选项,它可以让我们更加精确地指定需要转换的语言特性。假设我们需要使用 Array.prototype.includes() 方法,但是我们的目标浏览器对这个方法的支持并不完善,可以将我们的配置修改为:

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

在这个配置中,我们加入了 "useBuiltIns": "entry" 选项,它会自动引入需要的 polyfill,使得我们可以安全地使用 Array.prototype.includes() 方法。同时,我们还要在 package.json 文件中显式地安装 core-js,如下所示:

总结

Babel-preset-env 功能强大,支持自动检测需要转换的语言特性以及精确指定所需要的 polyfill。如果你想要学习更多关于这个工具的使用方法,请参考官方文档。

示例代码

以下是一个简单的示例,使用 Babel-preset-env 来将 ES6 的代码转换成 ES5 的代码。

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

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

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

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c7611a10032fedd391456e

纠错
反馈