Parse a glob pattern into an object of path parts.
JavaScript
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.editorconfig run update Mar 4, 2015
.gitattributes run update Mar 4, 2015
.gitignore run update Mar 4, 2015
.jshintrc run update Mar 4, 2015
.travis.yml run update Mar 4, 2015
.verb.md update/rebuild docs Mar 9, 2015
LICENSE run update Mar 4, 2015
README.md fix license format in package.json, Sep 22, 2015
browser.js prepublish Sep 22, 2015
index.js fixes `is.dotfile` check Apr 25, 2015
package.json 3.0.4 Sep 22, 2015
test.js fix escaping Apr 18, 2015

README.md

parse-glob NPM version Build Status

Parse a glob pattern into an object of tokens.

Changes from v1.0.0 to v3.0.4

  • all path-related properties are now on the path object
  • all boolean properties are now on the is object
  • adds base property

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');

Example

parseGlob('a/b/c/**/*.{yml,json}');

Returns:

{ orig: 'a/b/c/**/*.{yml,json}',
  is:
   { glob: true,
     negated: false,
     extglob: false,
     braces: true,
     brackets: false,
     globstar: true,
     dotfile: false,
     dotdir: false },
  glob: '**/*.{yml,json}',
  base: 'a/b/c',
  path:
   { dirname: 'a/b/c/**/',
     basename: '*.{yml,json}',
     filename: '*',
     extname: '.{yml,json}',
     ext: '{yml,json}' } }

Properties

The object returned by parseGlob has the following properties:

  • orig: a copy of the original, unmodified glob pattern
  • is: an object with boolean information about the glob:
    • glob: true if the pattern actually a glob pattern
    • negated: true if it's a negation pattern (!**/foo.js)
    • extglob: true if it has extglobs (@(foo|bar))
    • braces: true if it has braces ({1..2} or .{txt,md})
    • brackets: true if it has POSIX brackets ([[:alpha:]])
    • globstar: true if the pattern has a globstar (double star, **)
    • dotfile: true if the pattern should match dotfiles
    • dotdir: true if the pattern should match dot-directories (like .git)
  • glob: the glob pattern part of the string, if any
  • base: the non-glob part of the string, if any
  • path: file path segments
    • dirname: directory
    • basename: file name with extension
    • filename: file name without extension
    • extname: file extension with dot
    • ext: file extension without dot

Related

  • glob-base: Returns an object with the (non-glob) base path and the actual pattern. | homepage
  • glob-parent: Strips glob magic from a string to provide the parent path | homepage
  • glob-path-regex: Regular expression for matching the parts of glob pattern. | homepage
  • is-glob: Returns true if the given string looks like a glob pattern. | homepage
  • micromatch: Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. Just… more | homepage

Contributing

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

Tests

Install dev dependencies:

$ npm i -d && npm test

Author

Jon Schlinkert

License

Copyright © 2014-2015 Jon Schlinkert Released under the MIT license.


This file was generated by verb-cli on September 22, 2015.