tiny glob
Tiny and extremely fast library to match files and folders using glob patterns.
"Globs" is the common name for a specific type of pattern used to match files and folders. It's the patterns you type when you do stuff like ls *.js
in your shell or put src/*
in a .gitignore
file. When used to match filenames, it's sometimes called a "wildcard".
Install
npm install tiny-glob
Core Features
- π₯ extremely fast: ~350% faster than node-glob and ~230% faster than fast-glob
- πͺ powerful: supports advanced globbing patterns (
ExtGlob
) - π¦ tiny: only ~45 LOC with 2 small dependencies
- π« friendly: simple and easy to use api
- π cross-platform: supports both unix and windows
Usage
const glob = require('tiny-glob');
(async function(){
let files = await glob('src/*/*.{js,md}');
// => [ ... ] array of matching files
})();
API
glob(str, options)
Type: function
Returns: Array
Return array of matching files and folders
This function is async
and returns a promise.
str
Type: String
The glob pattern to match against.
OBS: Please only use forward-slashes in glob expressions. Even on windows
options.cwd
Type: String
Default: '.'
Change default working directory.
options.dot
Type: Boolean
Default: false
Allow patterns to match filenames or directories that begin with a period (.
).
options.absolute
Type: Boolean
Default: false
Return matches as absolute paths.
options.filesOnly
Type: Boolean
Default: false
Skip directories and return matched files only.
options.flush
Type: Boolean
Default: false
Flush the internal cache object.
Windows
Though Windows may use /
, \
, or \\
as path separators, you can only use forward-slashes (/
) when specifying glob expressions. Any back-slashes (\
) will be interpreted as escape characters instead of path separators.
This is common across many glob-based modules; see node-glob
for corroboration.
Benchmarks
glob x 13,405 ops/sec Β±1.80% (85 runs sampled)
fast-glob x 25,745 ops/sec Β±2.76% (59 runs sampled)
tiny-glob x 102,658 ops/sec Β±0.79% (91 runs sampled)
Fastest is tiny-glob
βββββββββββββ¬ββββββββββββββββββββββββββ¬ββββββββββββββ¬βββββββββββββββββ
β Name β Mean time β Ops/sec β Diff β
βββββββββββββΌββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€
β glob β 0.00007459990597268128 β 13,404.843 β N/A β
βββββββββββββΌββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€
β fast-glob β 0.000038842529587611705 β 25,744.976 β 92.06% faster β
βββββββββββββΌββββββββββββββββββββββββββΌββββββββββββββΌβββββββββββββββββ€
β tiny-glob β 0.00000974110141018254 β 102,657.796 β 298.75% faster β
βββββββββββββ΄ββββββββββββββββββββββββββ΄ββββββββββββββ΄βββββββββββββββββ
Advanced Globbing
Learn more about advanced globbing
License
MIT Β© Terkel Gjervig