What is glob-promise?
The glob-promise package is a wrapper for the 'glob' library that provides a way to use glob functionality with promises instead of callbacks. This allows for better integration with modern JavaScript's async/await syntax and improves the readability and maintainability of asynchronous file pattern matching code.
What are glob-promise's main functionalities?
Asynchronous file pattern matching
Use glob patterns to asynchronously find files and directories in your project that match the given pattern. The function returns a promise that resolves with an array of matching paths.
const glob = require('glob-promise');
async function findFiles(pattern) {
try {
const files = await glob(pattern);
console.log(files);
} catch (error) {
console.error('Error matching files:', error);
}
}
findFiles('**/*.js');
Synchronous file pattern matching
Provides a synchronous method to perform file pattern matching, which can be useful in scenarios where asynchronous operations are not possible or desired.
const glob = require('glob-promise');
function findFilesSync(pattern) {
try {
const files = glob.sync(pattern);
console.log(files);
} catch (error) {
console.error('Error matching files:', error);
}
}
findFilesSync('**/*.js');
Options customization
Allows customization of the file matching process by passing an options object. This can include ignoring certain patterns, specifying the root directory, and more.
const glob = require('glob-promise');
async function findFilesWithIgnores(pattern, ignores) {
const options = { ignore: ignores };
try {
const files = await glob(pattern, options);
console.log(files);
} catch (error) {
console.error('Error matching files:', error);
}
}
findFilesWithIgnores('**/*.js', ['node_modules/**']);
Other packages similar to glob-promise
fast-glob
fast-glob is an alternative to glob-promise that is focused on speed and efficiency. It supports promises and async/await out of the box and offers a similar API. It is often faster due to its use of optimized algorithms and filesystem caching.
node-glob
node-glob, also known as simply 'glob', is the underlying library that glob-promise wraps. It provides the core functionality of file pattern matching but uses a callback-based API instead of promises.
tiny-glob
tiny-glob is a minimalistic file globbing library that is designed to be small and fast. It supports an async API but does not have as many features as glob-promise or fast-glob, making it a good choice for simpler use cases or environments where bundle size is a concern.
Promise version of glob
Match files using the patterns the shell uses, like stars and stuff.
Note: This is just a Promise
wrapped version of glob
[!IMPORTANT]
Glob has native Promise support as of v9.0.0
, please use it directly.
I will not issue a deprecation notice on this package, because I can't deal with the volume of angry tickets that will follow.
Install
npm install glob-promise glob
NOTE
glob
is set as a peerDependency
in package.json
npm
>= 7 will automatically install peerDependencies
npm
<= 6 will not automatically install peerDependencies
.
You will need to manually add glob
as a dependency to your project for glob-promise
to work.
API
glob(pattern [, options])
Alias for glob.promise
glob.promise(pattern [, options])
pattern: String
(glob pattern)
options: Object
or String
Return: Object
(Promise)
When it finishes, it will be fulfilled with an Array
of filenames as its first argument.
When it fails to read the files, it will be rejected with an error as its first argument.
glob('**/*')
.then(function(contents) {
contents;
});
glob('{foo,bar.baz}.txt', { nobrace: true })
.then(function(contents) {
contents;
});
glob.glob(pattern [, options], cb)
see glob
glob.sync(pattern [, options])
see glob.sync()
glob.hasMagic(pattern, [options])
see glob.hasMagic()
Class: glob.Glob
see Glob
options
The option object will be directly passed to glob.
Author: Ahmad Nassri •
Twitter: @AhmadNassri