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
npm install globby
├── 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);
}
Convert a path to a pattern. Learn more.
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.
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'));
Returns a (path: URL | string) => boolean
indicating whether a given path is ignored via a .gitignore
file.
Takes cwd?: URL | string
as options.
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.