使用 babel 7.5.5、core-js 3.1.4 和 webpack 4.38.0,如何将 core-js 排除在转译之外?
我不想node_modules
完全排除,因为我有需要编译的库
如果我使用exclude: /node_modules\/(core-js)/
,会抛出一个 core-js 模块
类型错误:$ 不是函数
这给我留下了另外两个选择。
- 改用包含,包括我的 src 目录和需要逐个转换的每个依赖项
- 使用
useBuiltIns: entry
而不是使用,因为在这种情况下exclude: /node_modules/\(core-js)/
有效,并且import
core.js 在 main.js 的顶部
这两个选项对我来说似乎都不是很好的解决方案,因为usage
自 7.4 以来“不再是实验性的”。
有什么方法可以让它使用用法吗?它是 babel-loader 还是 babel 中的错误?还是我的配置有问题?
这是我的 Webpack 配置:
const path = require('path');
const webpack = require('webpack');
module.exports = {
mode: 'production',
entry: {
main: ['./src/main'],
},
output: {
path: path.resolve(__dirname, './build/'),
publicPath: '/build/'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules\/(core-js)/,
use: {
loader: 'babel-loader'
},
},
{
test: require.resolve('jquery'),
use: [
{
loader: 'expose-loader',
options: 'jQuery'
},
{
loader: 'expose-loader',
options: '$'
}
]
}
]
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery'
})
],
};
这是我的 babel 配置:
module.exports = function (api) {
api.cache(true);
return {
presets: [
[
'@babel/preset-env',
{
corejs: {
version: 3,
},
useBuiltIns: 'usage',
}
]
],
};
};
您可以使用以下存储库重现错误:https ://github.com/tomm1996/usebuiltins-exclude-test