Nitrate Processed Mincemeat

    match-file

    1.0.0 • Public • Published

    match-file NPM version NPM monthly downloads NPM total downloads Linux Build Status

    Returns true when the given name matches any of the path properties on a vinyl file.

    Please consider following this project's author, Jon Schlinkert, and consider starring the project to show your ❤️ and support.

    Install

    Install with npm:

    $ npm install --save match-file

    Usage

    var matchFile = require('match-file');

    API

    matchFile

    Returns true if the given string matches one of the path properties on the file object (does not match agains file.extname only)

    var File = require('vinyl');
    var matchFile = require('match-file');
     
    var file = new File({path: 'a/b/c.txt', base: 'a'});
    var isMatch = matchFile('c.txt', file);
    //=> true (since `c.txt` matches file.basename)

    Examples

    Continuing with the above setup code, all of the following would return true:

    // file.path
    matchFile('a/b/c.txt', file);
    // file.relative
    matchFile('b/c.txt', file);
    // file.basename
    matchFile('c.txt', file);
    // file.stem
    matchFile('c', file);

    .isMatch

    Similar to matchFile, but also supports glob patterns for matching. micromatch is used for matching, visit that project to see all available features and options.

    var file = new File({path: 'a/b/c.txt'});
    console.log(matcher.isMatch('*.js', file));
    //=> false
     
    var file = new File({path: 'a/b/c.js'});
    console.log(matcher.isMatch('*.js', file));
    //=> true

    Examples

    var File = require('vinyl');
    var matchFile = require('match-file');
     
    var file = new File({path: 'a/b/c/d/e.txt', base: 'a/b/c'});
    file.key = 'zzz/a.txt'; // arbitrary key (for caching)
    // file.path
    console.log(matchFile.isMatch('a/b/c/d/e.txt', file));
    // file.relative
    console.log(matchFile.isMatch('d/e.txt', file));
    // file.basename
    console.log(matchFile.isMatch('e.txt', file));
    // file.stem
    console.log(matchFile.isMatch('e', file));
    // file.key
    console.log(matchFile.isMatch('zzz/a.txt', file));
    // glob pattern for `file.path`
    console.log(matchFile.isMatch('**/*.txt', file));
    // glob pattern for `file.relative`
    console.log(matchFile.isMatch('d/*.txt', file));
    // glob pattern for `file.stem`
    console.log(matchFile.isMatch('*', file));
    // glob pattern for `file.basename`
    console.log(matchFile.isMatch('*.txt', file));

    .matcher

    Returns a matcher function bound to the given glob patterns and options. micromatch is used for matching, visit that project to see all available features and options.

    var isMatch = matchFile.matcher('*.js');
    console.log(isMatch);
    //=> [function]
     
    var file = new File({path: 'a/b/c.txt'});
    console.log(isMatch(file));
    //=> false
     
    var file = new File({path: 'a/b/c.js'});
    console.log(isMatch(file));
    //=> true

    Examples

    Given this setup code:

    var File = require('vinyl');
    var matchFile = require('match-file');
     
    var file = new File({path: 'a/b/c/d/e.txt', base: 'a/b/c'});
    file.key = 'zzz/a.txt'; // arbitrary key (for caching)

    All of the following examples would return true:

    // file.path
    var isMatch = matchFile.matcher('a/b/c/d/e.txt');
    console.log(isMatch(file));
    // file.relative
    var isMatch = matchFile.matcher('d/e.txt');
    console.log(isMatch(file));
    // file.basename
    var isMatch = matchFile.matcher('e.txt');
    console.log(isMatch(file));
    // file.stem
    var isMatch = matchFile.matcher('e');
    console.log(isMatch(file));
    // file.key
    var isMatch = matchFile.matcher('zzz/a.txt');
    console.log(isMatch(file));
    // glob pattern for `file.path`
    var isMatch = matchFile.matcher('**/*.txt');
    console.log(isMatch(file));
    // glob pattern for `file.relative`
    var isMatch = matchFile.matcher('d/*.txt');
    console.log(isMatch(file));
    // glob pattern for `file.stem`
    var isMatch = matchFile.matcher('*');
    console.log(isMatch(file));
    // glob pattern for `file.basename`
    var isMatch = matchFile.matcher('*.txt');
    console.log(isMatch(file));

    Gulp usage

    Use in your gulp plugin:

    var though = require('though2');
    var gulp = require('gulp');
     
    gulp.task('example', function() {
      return gulp.src('src/**/*')
        .pipe(filter('*.js'));
    });
     
    function filter(pattern, options) {
      // define a matcher function outside of the plugin function
      var isMatch = matchFile.matcher(pattern, options);
     
      return through.obj(function(file, enc, next) {
        // use the matcher function
        if (isMatch(file)) {
          next(null, file);
          return;
        }
        next();
      });
    }

    About

    Contributing

    Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

    Running Tests

    Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:

    $ npm install && npm test
    Building docs

    (This project's readme.md is generated by verb, please don't edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)

    To generate the readme, run the following command:

    $ npm install -g verbose/verb#dev verb-generate-readme && verb

    Related projects

    You might also be interested in these projects:

    • assemble: Get the rocks out of your socks! Assemble makes you fast at creating web projects… more | homepage
    • generate: Command line tool and developer framework for scaffolding out new GitHub projects. Generate offers the… more | homepage
    • get-view: Utility for getting an assemble view from a collection object. | homepage
    • micromatch: Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | homepage
    • verb: Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… more | homepage

    Author

    Jon Schlinkert

    License

    Copyright © 2018, Jon Schlinkert. Released under the MIT License.


    This file was generated by verb-generate-readme, v0.6.0, on February 14, 2018.

    Install

    npm i match-file

    DownloadsWeekly Downloads

    25,346

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    12.6 kB

    Total Files

    4

    Last publish

    Collaborators

    • jonschlinkert