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

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

    5.1.2 • Public • Published


    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.


    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)


    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.


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


    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)


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


    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.


    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]*') // '.'




    npm i [email protected]





    Unpacked Size

    12.1 kB

    Total Files


    Last publish


    • avatar
    • avatar
    • avatar
    • avatar
    • avatar