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

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

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

最佳答案

当您指定时,它可以工作:

"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并检查冲突。

关于javascript - 使用babel-preset-env将polyfill用作导入语句或将其添加到webpack.config.js的条目中会更好吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43282214/

10-12 00:03