Narcoleptic Pasta Manufacturer
    Have ideas to improve npm?Join in the discussion! »

    glob-parent
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/glob-parent package

    5.1.2 • Public • Published

    glob-parent

    NPM version Downloads Azure Pipelines Build Status Travis Build Status AppVeyor Build Status Coveralls Status Gitter chat

    Extract the non-magic parent path from a glob string.

    Usage

    var globParent = require('glob-parent');
    
    globParent('path/to/*.js'); // 'path/to'
    globParent('/root/path/to/*.js'); // '/root/path/to'
    globParent('/*.js'); // '/'
    globParent('*.js'); // '.'
    globParent('**/*.js'); // '.'
    globParent('path/{to,from}'); // 'path'
    globParent('path/!(to|from)'); // 'path'
    globParent('path/?(to|from)'); // 'path'
    globParent('path/+(to|from)'); // 'path'
    globParent('path/*(to|from)'); // 'path'
    globParent('path/@(to|from)'); // 'path'
    globParent('path/**/*'); // 'path'
    
    // if provided a non-glob path, returns the nearest dir
    globParent('path/foo/bar.js'); // 'path/foo'
    globParent('path/foo/'); // 'path/foo'
    globParent('path/foo'); // 'path' (see issue #3 for details)

    API

    globParent(maybeGlobString, [options])

    Takes a string and returns the part of the path before the glob begins. Be aware of Escaping rules and Limitations below.

    options

    {
      // Disables the automatic conversion of slashes for Windows
      flipBackslashes: true
    }

    Escaping

    The following characters have special significance in glob patterns and must be escaped if you want them to be treated as regular path characters:

    • ? (question mark) unless used as a path segment alone
    • * (asterisk)
    • | (pipe)
    • ( (opening parenthesis)
    • ) (closing parenthesis)
    • { (opening curly brace)
    • } (closing curly brace)
    • [ (opening bracket)
    • ] (closing bracket)

    Example

    globParent('foo/[bar]/') // 'foo'
    globParent('foo/\\[bar]/') // 'foo/[bar]'

    Limitations

    Braces & Brackets

    This library attempts a quick and imperfect method of determining which path parts have glob magic without fully parsing/lexing the pattern. There are some advanced use cases that can trip it up, such as nested braces where the outer pair is escaped and the inner one contains a path separator. If you find yourself in the unlikely circumstance of being affected by this or need to ensure higher-fidelity glob handling in your library, it is recommended that you pre-process your input with expand-braces and/or expand-brackets.

    Windows

    Backslashes are not valid path separators for globs. If a path with backslashes is provided anyway, for simple cases, glob-parent will replace the path separator for you and return the non-glob parent path (now with forward-slashes, which are still valid as Windows path separators).

    This cannot be used in conjunction with escape characters.

    // BAD
    globParent('C:\\Program Files \\(x86\\)\\*.ext') // 'C:/Program Files /(x86/)'
    
    // GOOD
    globParent('C:/Program Files\\(x86\\)/*.ext') // 'C:/Program Files (x86)'

    If you are using escape characters for a pattern without path parts (i.e. relative to cwd), prefix with ./ to avoid confusing glob-parent.

    // BAD
    globParent('foo \\[bar]') // 'foo '
    globParent('foo \\[bar]*') // 'foo '
    
    // GOOD
    globParent('./foo \\[bar]') // 'foo [bar]'
    globParent('./foo \\[bar]*') // '.'

    License

    ISC

    Install

    npm i [email protected]

    Version

    5.1.2

    License

    ISC

    Unpacked Size

    12.1 kB

    Total Files

    5

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar