Javascript 如何使用babel预置环境保存动态导入语句?
我正在创建包含用于代码拆分的动态导入的共享模块 我有如下代码:Javascript 如何使用babel预置环境保存动态导入语句?,javascript,webpack,babeljs,dynamic-import,Javascript,Webpack,Babeljs,Dynamic Import,我正在创建包含用于代码拆分的动态导入的共享模块 我有如下代码: import('./moduleA')。然后(/*dostuff*/) 然而,babel将其编译为延迟要求,从而阻止Webpack进行代码拆分 转换后的结果如下所示: Promise.resolve()。然后(()=>require('./moduleA')。然后(/*dostuff*/) My.babelrc.json很简单,只包含: { "presets": ["@babel/preset-
import('./moduleA')。然后(/*dostuff*/)
然而,babel将其编译为延迟要求,从而阻止Webpack进行代码拆分
转换后的结果如下所示:
Promise.resolve()。然后(()=>require('./moduleA')。然后(/*dostuff*/)
My.babelrc.json
很简单,只包含:
{
"presets": ["@babel/preset-env"]
}
如何在我的babel转换代码中保留动态导入?这是因为默认情况下,
@babel/preset env
包含一个插件,@babel/plugin proposition dynamic import
,用于转换动态导入
有两种方法可以阻止这种情况
备选方案一(建议)
您可以排除插件@babel/plugin提案动态导入
,这样import()
语句保持不变。使用以下内容更新预设选项:
{
"presets": [["@babel/preset-env", { "exclude": ["proposal-dynamic-import"] }]]
}
选择二
在预设选项中添加“模块”:false
,但这也将保留ES模块导入/导出语句
{
"presets": [["@babel/preset-env", { "modules": false }]]
}
这些GitHub问题对此进行了深入描述: