RegEx in Webpack loader exclude/include config doe

2020-08-13 07:53发布

问题:

I am trying to apply babel-loader to a specific pattern of modules, say foo.*, under node_modules in addition to my app.

Other modules under node_modules should be skipped as usual. First I tried to use negative look-ahead didn't work:

{
  test: /\.js$/,
  exclude: [
    /node_modules\/(?!foo).*/
  ],
  loader: 'babel-loader',
  query: {
    ...
  }
}, 

Then I splited to two loaders and didn't work either:

{
  test: /\.js$/,
  exclude: [
    path.resolve(_path, "node_modules")
  ],
  loader: 'babel-loader',
  query: {
    ...
  }
}, 
{
  test: /\.js$/,
  include: [
    /node_modules\/foo.*/
  ],
  loader: 'babel-loader',
  query: {
    ...
  }
}

However, if I use string instead of RegEx, it works for one folder:

include: [
  path.resolve(_path, "node_modules/foo")
],

This indicates to me the Regex is not working as expected.

Has anyone got RegEx working in Include/Exclude field?

回答1:

It turns out it's a matter of path separator in Windows, which I am using. The following negative lookahead syntax works and is OS agnostic:

new RegExp('node_modules\\'+path.sep+'(?!foo).*')


标签: webpack