|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- # node-fileset [](http://travis-ci.org/mklabs/node-fileset)
-
- Exposes a basic wrapper on top of
- [Glob](https://github.com/isaacs/node-glob) /
- [minimatch](https://github.com/isaacs/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.
-
- [](https://nodei.co/npm/fileset/)
-
- 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](https://github.com/mklabs/node-fileset/blob/master/CHANGELOG.md#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
- results `foo/**/*.js *.md`
- * **callback**: *optional* function that gets called with an error if
- something wrong happend, otherwise null with an array of results
-
- 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
- the pattern.
- * *include*: Emitted each time an include match is found.
- * *exclude*: Emitted each time an exclude match is found and filtered
- out from the fileset.
- * *end*: Emitted when the matching is finished with all the matches
- found, optionally filtered by the exclude patterns.
-
- #### Callback
-
- ```js
- 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
-
- ```js
- 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](https://github.com/mklabs/node-fileset/tree/master/tests) for
- more examples.
-
- ## Sync usage
-
- ```js
- 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
-
- Run `npm 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](https://github.com/isaacs/node-glob) and
- [minimatch](https://github.com/isaacs/minimatch). Check them out!
|