Replacements for globby
tinyglobby
globby
is a convenience wrapper around fast-glob
.
You can follow roughly the same migration process as documented in the fast-glob
replacement guide, since globby
is built on top of it and the main differences are its extra conveniences.
If you don’t need .gitignore
handling, prefer tinyglobby
- it’s smaller and faster. If you do need .gitignore
behavior, pair tinyglobby
with a small git-based helper. For most cases, this will likely be good enough.p
js
import { execSync } from 'node:child_process';
import { glob, escapePath } from 'tinyglobby';
async function globWithGitignore(patterns, options = {}) {
const { cwd = process.cwd(), ...restOptions } = options;
try {
const gitIgnored = execSync(
'git ls-files --others --ignored --exclude-standard --directory',
{ cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }
)
.split('\n')
.filter(Boolean)
.map(p => escapePath(p));
return glob(patterns, {
...restOptions,
cwd,
ignore: [...(restOptions.ignore || []), ...gitIgnored]
});
} catch {
return glob(patterns, options);
}
}
const paths = await globWithGitignore(['**/*'], {cwd})