babel-preset-env
提供选项useBuiltIns
以将其应用于babel-polyfill
并将import 'babel-polyfill'
转换为特定的,基于环境的import 'core-js/whatever
。
如果我在我的Webpack条目部分添加babel-polyfill
(参见下面的示例),是否应用了此转换,或者在这种情况下useBuiltIns
被忽略并被所有可能的导入替换?
entry: {
app: ['babel-polyfill', './src/app.js']
}
答案 0 :(得分:3)
当您指定时,它会起作用:
"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
并检查碰撞。