一文带你了解 babel-preset-env
相信很多人都和我一样,刚接触babel的时候都是使用 babel-preset-es2015
这个预设套餐的,但是显然目前而言 babel-preset-env
会是一个更好的选择,babel-preset-env
可以根据配置的目标浏览器或者运行环境来自动将ES2015+的代码转换为es5。
吸引人的地方在于我们可以通过 [.browserslistrc](https://github.com/browserslist/browserslist)
文件来指定特定的目标浏览器。当然也可以通过targets选项的browsers选项指定。不过如果你的目标浏览器支持 es modules
特性,browsers
选项则会失效,如下:
{ "presets": [ ["@babel/preset-env" "targets": { "esmodules": true } ] ] }
同样也可以指定Node.js的版本:
{ "presets": [ ["@babel/preset-env" "targets": { "node": "6.10" } ] ] }
如果node的选项值为 current
则说明是指定运行时的node.js版本。
{ "presets": [ ["@babel/preset-env" "targets": { "node": "current" } ] ] }
我们需要知道的是制定个targets的browsers时使用的是 browserslist ,我们可以在 .babelrc
文件、package.json文件、browserslist中指定浏览器版本选项,优先级规则是 .babelrc
文件定义了则会忽略 browserslist
、.babelrc
没有定义则会搜索 browserslist
和 package.json
两者应该只定义一个,否则会报错。
babel-preset-env
的主要参数选项有:
- targets
- targets.node
- targets.browsers
- spec : 启用更符合规范的转换,但速度会更慢,默认为
false
- loose:是否使用
loose mode
,默认为false
- modules:将 ES6 module 转换为其他模块规范,可选
"adm" | "umd" | "systemjs" | "commonjs" | "cjs" | false
,默认为false
- debug:启用debug,默认
false
- include:一个包含使用的
plugins
的数组 - exclude:一个包含不使用的
plugins
的数组 - useBuiltIns:为
polyfills
应用@babel/preset-env
,可选"usage" | "entry" | false
,默认为false
相关链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: NumPy 初步使用
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论