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

Alf*_*Alf 11 javascript ecmascript-6 webpack babeljs babel-polyfill

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

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

entry: {
  app: ['babel-polyfill', './src/app.js']
}
Run Code Online (Sandbox Code Playgroud)

Rom*_*mov 3

当您指定以下内容时它会起作用:

"presets": [ ..., "env" ]
Run Code Online (Sandbox Code Playgroud)

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

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

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

而且你并不真的需要它。您只需require("babel-polyfill");在应用程序中添加一次即可,如文档中所述。您甚至不能导入babel-polyfill两次,因为它可能会导致错误,因为它将自身写入global并检查碰撞。