3.4 KiB
parse-glob 
Parse a glob pattern into an object of tokens.
BREAKING CHANGES in 2.0
- all path-related properties are now on the
pathobject - all boolean properties are now on the
isobject - adds
baseproperty
See the properties section for details.
Install with npm
npm i parse-glob --save
- parses 1,000+ glob patterns in 29ms (2.3 GHz Intel Core i7)
- Extensive unit tests (more than 1,000 lines), covering wildcards, globstars, character classes, brace patterns, extglobs, dotfiles and other complex patterns.
See the tests for hundreds of examples.
Usage
var parseGlob = require('parse-glob');
parseGlob('a/b/{c,d}/*.js');
Returns:
{ path:
{ dirname: 'a/b/{c,d}/',
filename: '*.js',
basename: '*',
extname: '.js',
ext: 'js' },
is: { glob: true, negated: false, globstar: false,
dotfile: false, dotdir: false },
original: 'a/b/{c,d}/*.js',
pattern: 'a/b/{c,d}/*.js' }
Properties
The object returned by parseGlob has the following properties:
pattern: the glob patternbase: whentrueis passed as the second argument, abasepath is extracted and stripped frompattern. See more beloworiginal: a copy of the original, unmodified glob patternpath: file path segmentspath.dirname: directorypath.filename: filename, including extensionpath.basename: filename, without extensionpath.extname: file extension, with dotpath.ext: file extension, without dot
is: an object with boolean information about the glob:is.glob: true if the pattern actually a glob patternis.negated: true if it's a negation pattern (!**/foo.js)is.globstar: true if the pattern has a double star (**)is.dotfile: true if the pattern should match dotfilesis.dotdir: true if the pattern should match dot-directories (like.git)
base property
The base property is created by taking any leading dirname segments in the pattern that do not contain any glob symbols (!*{}?(|)[]). If a base cannot be extracted, the value of base will be an empty string.
Examples
Without base defined:
var tokens = parseGlob('a/b/{c,d}/*.js');
// tokens.base => 'undefined'
// tokens.pattern => 'a/b/{c,d}/*.js'
With base defined:
var tokens = parseGlob('a/b/{c,d}/*.js', true);
// tokens.base => 'a/b'
// tokens.pattern => '{c,d}/*.js'
The resulting object would be:
{ path:
{ dirname: 'a/b/{c,d}/',
filename: '*.js',
basename: '*',
extname: '.js',
ext: 'js' },
is: { glob: true, negated: false, globstar: false,
dotfile: false, dotdir: false },
original: 'a/b/{c,d}/*.js',
pattern: '{c,d}/*.js',
base: 'a/b' }
Run tests
Install dev dependencies:
npm i -d && npm test
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue
Author
Jon Schlinkert
License
Copyright (c) 2015 Jon Schlinkert
Released under the MIT license
This file was generated by verb on February 17, 2015.