我正在与Webpack Encore一起在一个项目中工作,我对如何允许Babel处理node_modules中的文件有疑问。
去年,我找到了一种解决方案,允许Babel使用以下方式处理node_modules
中的文件:
const webpackConfig = Encore.getWebpackConfig();
const babelLoader = webpackConfig.module.rules.find(rule => {
if (rule.use && rule.use[0]) {
const firstUse = rule.use[0];
return firstUse.loader === 'babel-loader';
}
return false;
});
babelLoader.exclude = /node_modules\/(?!bootstrap\/).*/;
module.exports = webpackConfig;
但是在最近的版本中,当我运行yarn run encore production
时,我是从Bootstrap获取文件而没有进行编译的,这在我的资产文件中不会发生。
我正在使用文件babelrc来配置Babel:
{
"presets": [
[
"@babel/preset-env",
{
"debug": true,
"useBuiltIns": "usage",
"corejs": 3,
"targets": "> 0.25%, not dead"
}
]
]
}
奇怪的是,如果我通过webpack.config.js文件配置Babel:
.configureBabel(function(babelConfig) {
}, {
include_node_modules: ['bootstrap']
})
它运作完美。所以我不知道两种解决方案之间的区别。在这种情况下,是否有任何实施细节导致第一个解决方案无效(如我所说,去年效果很好)?