我正在使用webpack 4,并且已经安装了带有许多子文件夹的模块,其结构为:
/node_modules/my_main_package/what_i_need_to_include
除了node_modules
,我需要排除整个what_i_need_to_include
。到目前为止,这是我在webpack.base.babel
中尝试过的操作:
第一种方法:
module: {
rules: [
{
test: /\.js$/,
exclude: '/node_modules/',
include: '/node_modules/my_main_package/what_i_need_to_include',
use: {
loader: 'babel-loader',
options: options.babelQuery,
},
},
...
第二种方法:
{
test: /\.js$/,
exclude: '/node_modules\/(?!my_main_package/what_i_need_to_include).*/'
...
}
两次都不成功。
我该如何工作?我在做什么错了?
答案 0 :(得分:1)
我必须感谢贝尔先生,他给了我一个可行的解决方案的链接,我将分享解决方案,我将自己回答我的问题,因为很少有人阅读评论,这可能是一个问题。其他。解决方法如下:
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules\/(?!(my_main_package\/what_i_need_to_include)\/).*/,
use: {
loader: 'babel-loader',
options: options.babelQuery,
},
},
...
}
希望这会有所帮助。
答案 1 :(得分:0)
值得注意的是,该页面上的解决方案不需要复杂的正则表达式,并且从技术上讲是受支持的方法。
module: {
rules: [
{
test: /\.js$/,
exclude: [
// Use an object instead of a string
{
test: path.resolve(__dirname, 'node_modules'),
// Exclude the following from the exclusion
exclude: path.resolve(__dirname, 'node_modules/name-of-package')
}
],
use: {
loader: 'babel-loader',
// ...
},
},
]
},