将polyfill作为带有babel-preset-env的import语句或将它们添加到webpack.config.js的条目中是否更好?

时间:2017-04-07 15:44:23

标签: javascript webpack ecmascript-6 babeljs babel-polyfill

babel-preset-env提供选项useBuiltIns以将其应用于babel-polyfill并将import 'babel-polyfill'转换为特定的,基于环境的import 'core-js/whatever

如果我在我的Webpack条目部分添加babel-polyfill(参见下面的示例),是否应用了此转换,或者在这种情况下useBuiltIns被忽略并被所有可能的导入替换?

entry: {
  app: ['babel-polyfill', './src/app.js']
}

1 个答案:

答案 0 :(得分:3)

当您指定时,它会起作用:

"presets": [ ..., "env" ]

它与入口点无关,因为您的./src/app.js已包含一些带有要求的代码,我猜。我只是不明白你想通过将babel-polyfill添加到入口点来实现什么,但在这种情况下似乎没有效果。

我将尝试详细说明它是如何工作的。有一个babel-preset-env插件可以准备转换插件和polyfill列表。 transform-polyfill-require-plugin使用此列表查找importrequire语句,并将其替换为特定于环境的模块列表。

它完全与入口点无关。通过添加babel-polyfill,您只需将其代码添加到您的捆绑包中即可。所以transform-polyfill-require-plugin无论如何都不起作用。可以通过简单的调试来检查它。

你真的不需要它。您只需在应用中添加require("babel-polyfill");一次,就像在文档中注意到的那样。您甚至无法导入babel-polyfill两次,因为它可能会导致错误,因为它会将自身写入global并检查碰撞。