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
使用此列表,该列表查找import
和require
语句,并用特定于环境的模块列表替换它。它根本与入口点无关。通过添加
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/