Babel-preset-env 是一个 Babel 的预设,它可以根据你所使用的 ECMAScript 版本以及你所指定的浏览器版本,自动确定需要转换的语言特性和插件,从而生成对应的转换代码。使用 Babel-preset-env 可以让你的代码更加兼容不同的浏览器和运行环境。
快速入门
首先,我们需要安装 babel-preset-env,方法如下:
npm install --save-dev 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,如下所示:
{ "dependencies": { "core-js": "^2.6.11" } }
总结
Babel-preset-env 功能强大,支持自动检测需要转换的语言特性以及精确指定所需要的 polyfill。如果你想要学习更多关于这个工具的使用方法,请参考官方文档。
示例代码
以下是一个简单的示例,使用 Babel-preset-env 来将 ES6 的代码转换成 ES5 的代码。
-- -------------------- ---- ------- -- --- -- ----- --- - --- -- --- ----------------------------- -- ---- --- -- ---- -------- --- --- - --- -- --- -----------------------------
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c7611a10032fedd391456e