node.js glob pattern for excluding multiple files

ke_wa picture ke_wa · May 22, 2014 · Viewed 65k times · Source

I'm using the npm module node-glob.

This snippet returns recursively all files in the current working directory.

var glob = require('glob');
glob('**/*', function(err, files) {
    console.log(files);
});

sample output:

[ 'index.html', 'js', 'js/app.js', 'js/lib.js' ]

I want to exclude index.html and js/lib.js. I tried to exclude these files with negative pattern '!' but without luck. Is there a way to achieve this only by using a pattern?

Answer

Sergei Panfilov picture Sergei Panfilov · Mar 1, 2016

I suppose it's not actual anymore but i got stuck with the same question and found an answer.

This can be done using only npm glob module. We need to use options as a second parameter to glob function

glob('pattern', {options}, cb)

There is an options.ignore pattern for your needs.

var glob = require('glob');

glob("**/*",{"ignore":['index.html', 'js', 'js/app.js', 'js/lib.js']}, function (err, files) {
  console.log(files);
})