What is tiny-glob?
The tiny-glob npm package is a minimalistic file globbing library. It is designed to be small and efficient, providing functionality to match file paths against specified patterns known as 'globs'. This package is particularly useful in environments where minimal overhead and fast execution are critical, such as in build tools and scripts.
What are tiny-glob's main functionalities?
File Globbing
This feature allows you to match files in a directory against a glob pattern. The example shows how to find all JavaScript files in the 'src' directory and its subdirectories.
const tg = require('tiny-glob');
async function getFiles() {
const files = await tg('**/*.js', { cwd: 'src' });
console.log(files);
}
getFiles();
Other packages similar to tiny-glob
glob
The 'glob' package is one of the most popular globbing libraries on npm. It offers a rich set of features and options but is larger in size compared to tiny-glob. It supports advanced pattern matching and filtering options.
fast-glob
Similar to tiny-glob, 'fast-glob' is designed for performance and efficiency. It provides a similar API but includes additional features such as the ability to ignore files, stream files, and more detailed statistics about the matching process. It is a good alternative when additional features are needed without a significant compromise on performance.
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}');
})();
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