glob-monster is a file globber that understands regular expressions.
Full documentation, synced from the source README:
Moved to https://github.com/DavidWells/packages/tree/master/packages/util-globs

File globber that understands globs or regex.
See tests for more details.
npm install glob-monsterconst { find, getFilePaths } = require('glob-monster')
const opts = {}
const files = await find(['**.md'], opts)
console.log(files)
/* [
'README.md',
'node_modules/dequal/readme.md',
] */
const opts = {}
const filesViaRegex = await find([/\.md$/], {})
console.log(filesViaRegex)
/* files [
'README.md',
'node_modules/dequal/readme.md',
] */
const mdxAndTestFiles = await getFilePaths(ROOT_DIR, {
patterns: [
/(.*)\.mdx?$/,
/\.test\.js$/,
],
ignore: [
/node_modules/,
],
excludeGitIgnore: true,
excludeHidden: true,
})I wanted a easy way to use glob patterns or regular expressions to locate files. Thus, this package was born.
String globs match via micromatch and is-glob.
*) — matches everything except slashes (path separators), hidden files (names starting with .).**) — matches zero or more directories.?) – matches any single character except slashes (path separators).[seq]) — matches any character in sequence.:book: A few additional words about the [basic matching behavior][picomatch_matching_behavior].
Some examples:
src/**/*.js — matches all files in the src directory (any level of nesting) that have the .js extension.src/*.?? — matches all files in the src directory (only first level of nesting) that have a two-character extension.file-[01].js — matches files: file-0.js, file-1.js.\\) — matching special characters ($^*+?()[]) as literals.[[:digit:]]).?(pattern-list)).{}).[1-5]).(a|b)).:book: A few additional words about the [advanced matching behavior][micromatch_extended_globbing].
Some examples:
src/**/*.{css,scss} — matches all files in the src directory (any level of nesting) that have the .css or .scss extension.file-[[:digit:]].js — matches files: file-0.js, file-1.js, …, file-9.js.file-{1..3}.js — matches files: file-1.js, file-2.js, file-3.js.file-(1|2) — matches files: file-1.js, file-2.js.