Exposes a basic wrapper on top of
Glob /
minimatch combo both written by
@isaacs. Glob now uses JavaScript instead of C++ bindings which makes it
usable in Node.js 0.6.x and Windows platforms.

Adds multiples patterns matching and exlude ability. This is basically just a sugar API syntax where you can specify a list of includes and optional exclude patterns. It works by setting up the necessary miniglob "fileset" and filtering out the results using minimatch.
Changelog
The callback is optional since the fileset method return an instance of EventEmitter which emit different events you might use:
Check out the tests for more examples.
The behavior should remain the same, although it lacks the last
All the magic is happening in Glob and minimatch. Check them out!

Adds multiples patterns matching and exlude ability. This is basically just a sugar API syntax where you can specify a list of includes and optional exclude patterns. It works by setting up the necessary miniglob "fileset" and filtering out the results using minimatch.
Changelog
Install
npm install fileset
Usage
Can be used with callback or emitter style.- include: list of glob patterns
foo/**/*.js *.md src/lib/**/*
- exclude: optional list of glob patterns to filter include
foo/**/*.js *.md
- callback: optional function that gets called with an error if
The callback is optional since the fileset method return an instance of EventEmitter which emit different events you might use:
- match: Every time a match is found, miniglob emits this event with
- include: Emitted each time an include match is found.
- exclude: Emitted each time an exclude match is found and filtered
- end: Emitted when the matching is finished with all the matches
Callback
var fileset = require('fileset');
fileset('**/*.js', '**.min.js', function(err, files) {
if (err) return console.error(err);
console.log('Files: ', files.length);
console.log(files);
});
Event emitter
var fileset = require('fileset');
fileset('**.coffee README.md *.json Cakefile **.js', 'node_modules/**')
.on('match', console.log.bind(console, 'error'))
.on('include', console.log.bind(console, 'includes'))
.on('exclude', console.log.bind(console, 'excludes'))
.on('end', console.log.bind(console, 'end'));
fileset
returns an instance of EventEmitter, with an includes
property
which is the array of Fileset objects (inheriting from
miniglob.Miniglob
) that were used during the mathing process, should
you want to use them individually.Check out the tests for more examples.
Sync usage
var results = fileset.sync('*.md *.js', 'CHANGELOG.md node_modules/**/*.md node_modules/**/*.js');
The behavior should remain the same, although it lacks the last
options
arguments to pass to internal glob
and minimatch
dependencies.Tests
Runnpm test
Why
Mainly for a build tool with cake files, to provide me an easy way to get a list of files by either using glob or path patterns, optionally allowing exclude patterns to filter out the results.All the magic is happening in Glob and minimatch. Check them out!