Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RegEx in Webpack loader exclude/include config doesn't work

Tags:

webpack

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?

like image 961
abbr Avatar asked Jul 04 '16 17:07

abbr


Video Answer


1 Answers

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).*')
like image 179
abbr Avatar answered Sep 21 '22 08:09

abbr