User-friendly glob matching
Based on fast-glob
but adds a bunch of useful features.
['foo*', '!foobar']
foo
→ foo/**/*
.gitignore
and similar ignore config filesURL
as cwd
├── unicorn
├── cake
└── rainbow
import {globby} from 'globby'; const paths = await globby(['*', '!cake']); console.log(paths); //=> ['unicorn', 'rainbow']
Note that glob patterns can only contain forward-slashes, not backward-slashes, so if you want to construct a glob pattern from path components, you need to use path.posix.join()
instead of path.join()
.
Returns a Promise<string[]>
of matching paths.
Type: string | string[]
See supported minimatch
patterns.
Type: object
See the fast-glob
options in addition to the ones below.
Type: boolean | string[] | object
Default: true
If set to true
, globby
will automatically glob directories for you. If you define an Array
it will only glob files that matches the patterns inside the Array
. You can also define an object
with files
and extensions
like below:
import {globby} from 'globby'; const paths = await globby('images', { expandDirectories: { files: ['cat', 'unicorn', '*.jpg'], extensions: ['png'] } }); console.log(paths); //=> ['cat.png', 'unicorn.png', 'cow.jpg', 'rainbow.jpg']
Note that if you set this option to false
, you won't get back matched directories unless you set onlyFiles: false
.
Type: boolean
Default: false
Respect ignore patterns in .gitignore
files that apply to the globbed files.
Type: string | string[]
Default: undefined
Glob patterns to look for ignore files, which are then used to ignore globbed files.
This is a more generic form of the gitignore
option, allowing you to find ignore files with a compatible syntax. For instance, this works with Babel's .babelignore
, Prettier's .prettierignore
, or ESLint's .eslintignore
files.
Returns string[]
of matching paths.
Returns a stream.Readable
of matching paths.
For example, loop over glob matches in a for await...of
loop like this:
import {globbyStream} from 'globby'; for await (const path of globbyStream('*.tmp')) { console.log(path); }convertPathToPattern(path)
Convert a path to a pattern. Learn more.
generateGlobTasks(patterns, options?)Returns an Promise<object[]>
in the format {patterns: string[], options: Object}
, which can be passed as arguments to fast-glob
. This is useful for other globbing-related packages.
Note that you should avoid running the same tasks multiple times as they contain a file system cache. Instead, run this method each time to ensure file system changes are taken into consideration.
generateGlobTasksSync(patterns, options?)Returns an object[]
in the format {patterns: string[], options: Object}
, which can be passed as arguments to fast-glob
. This is useful for other globbing-related packages.
Takes the same arguments as generateGlobTasks
.
Returns a boolean
of whether there are any special glob characters in the patterns
.
Note that the options affect the results.
This function is backed by fast-glob
.
Returns a Promise<(path: URL | string) => boolean>
indicating whether a given path is ignored via a .gitignore
file.
Takes cwd?: URL | string
as options.
import {isGitIgnored} from 'globby'; const isIgnored = await isGitIgnored(); console.log(isIgnored('some/file'));isGitIgnoredSync(options?)
Returns a (path: URL | string) => boolean
indicating whether a given path is ignored via a .gitignore
file.
Takes cwd?: URL | string
as options.
Returns a Promise<(path: URL | string) => boolean>
indicating whether a given path is ignored via the ignore files.
This is a more generic form of the isGitIgnored
function, allowing you to find ignore files with a compatible syntax. For instance, this works with Babel's .babelignore
, Prettier's .prettierignore
, or ESLint's .eslintignore
files.
Takes cwd?: URL | string
as options.
import {isIgnoredByIgnoreFiles} from 'globby'; const isIgnored = await isIgnoredByIgnoreFiles("**/.gitignore"); console.log(isIgnored('some/file'));isIgnoredByIgnoreFilesSync(patterns, options?)
Returns a (path: URL | string) => boolean
indicating whether a given path is ignored via the ignore files.
This is a more generic form of the isGitIgnoredSync
function, allowing you to find ignore files with a compatible syntax. For instance, this works with Babel's .babelignore
, Prettier's .prettierignore
, or ESLint's .eslintignore
files.
Takes cwd?: URL | string
as options.
import {isIgnoredByIgnoreFilesSync} from 'globby'; const isIgnored = isIgnoredByIgnoreFilesSync("**/.gitignore"); console.log(isIgnored('some/file'));
Just a quick overview.
*
matches any number of characters, but not /
?
matches a single character, but not /
**
matches any number of characters, including /
, as long as it's the only thing in a path part{}
allows for a comma-separated list of "or" expressions!
at the beginning of a pattern will negate the matchVarious patterns and expected matches.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4