tiny-glob

Tiny and extremely fast globbing

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
tiny-glob
839310.2.93 years ago6 years agoMinified + gzip package size for tiny-glob in KB

Readme

Tiny Glob


tiny glob

<img src="https://img.shields.io/npm/v/tiny-glob.svg" alt="version" />
<img src="https://github.com/terkelg/tiny-glob/actions/workflows/ci.yml/badge.svg" alt="CI" />
<img src="https://img.shields.io/npm/dm/tiny-glob.svg" alt="downloads" />
<img src="https://packagephobia.now.sh/badge?p=tiny-glob" alt="install size" />


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
- Greg's Wiki - Bash Extended Globbing

License

MIT Ā© Terkel Gjervig