# fast-ignore

> A fast parser and processor for .gitignore files.

Latest version **2.0.0** (published 2026-02-15) · MIT license · 0 weekly downloads

## Install

```sh
npm install fast-ignore
pnpm add fast-ignore
yarn add fast-ignore
bun add fast-ignore
```

## Health

**Score 60/100 (C)** — status: stable.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 2.0.0 |
| Published | 2026-02-15 |
| First published | 2023-12-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 16.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 59 |
| Maintainers | fabiospampinato |
| Keywords | fast, gitignore, dotignore, ignore |

## Links

- npm: https://www.npmjs.com/package/fast-ignore
- Repository: https://github.com/fabiospampinato/fast-ignore
- Homepage: https://github.com/fabiospampinato/fast-ignore#readme
- Issues: https://github.com/fabiospampinato/fast-ignore/issues
- npm.io page: https://npm.io/package/fast-ignore

## Dependencies (2)

- [grammex](https://npm.io/package/grammex.md) ^3.1.12
- [string-escape-regex](https://npm.io/package/string-escape-regex.md) ^1.0.1

## Alternatives

- [babylon](https://npm.io/package/babylon.md) — 5.1M weekly downloads
- [csscolorparser](https://npm.io/package/csscolorparser.md) — 3.7M weekly downloads
- [expr-eval-fork](https://npm.io/package/expr-eval-fork.md) — 1.5M weekly downloads
- [@leeoniya/ufuzzy](https://npm.io/package/@leeoniya/ufuzzy.md) — 247.7K weekly downloads
- [xml-parser](https://npm.io/package/xml-parser.md) — 78.4K weekly downloads

## Recent versions

- 2.0.0 (latest) — 2026-02-15
- 1.1.3 — 2024-03-29
- 1.1.2 — 2024-03-28
- 1.1.1 — 2023-12-09
- 1.1.0 — 2023-12-09
- 1.0.0 — 2023-12-09

## README

# Fast Ignore

A fast parser and processor for `.gitignore` files.

## Install

```sh
npm install fast-ignore
```

## Usage

```ts
import fastIgnore from 'fast-ignore';

// Let's create the content of a .gitignore file

const gitignore = `
# Some always-ignore files
*~
*.err
*.log
._*
.cache
.fseventsd
.DocumentRevisions*
.DS_Store
.TemporaryItems
.Trashes
Thumbs.db

# Some project-specific ignores
dist
node_modules

# Some directory-only ignores
dir/
`;

// Let's create our ignore function

const ignore = fastIgnore ( gitignore );

// Now we can check if a relative path should be ignored

ignore ( 'foo/bar.js' ); // false
ignore ( 'node_modules/foo/bar.js' ); // true
ignore ( 'dist/foo/bar.js' ); // true

// Directory-only globs are supported _automatically_ when the situation is unambiguous
// In the following scenario we know for sure that "dir" must be a directory, so it's ignored

ignore ( 'dir/foo.js' ); // true

// Directory-only globs are supported _manually_ when the situation is ambiguous
// In the following scenario we can't know for sure if "dir" is a file or a directory
// We are going to assume it's not a directory, but if it is then you need to tell the library via the options object

ignore ( 'dir' ); // false
ignore ( 'dir', { isDirectory: true } ); // true

// We can also work with multiple ignore files at once, which is faster than handling them individually
// This goes roughly as fast as just concatenating the files together, but with the semantics of separate files
// The difference is that an ignore file that comes later won't be able to un-ignore something that was ignored by a previous one
// As a result please note that writing `fastIgnore ([ 'dist', '!dist' ])` may work differently than you expected

const prettierignore = `
**/test
**/__test__

# The following globs are effectively useless
# because they can't un-ignore something that was ignored by any previous ignore files
!dist
!node_modules
`;

const comboIgnore = fastIgnore ([ gitignore, prettierignore ]);

comboIgnore ( 'foo/bar.js' ); // false
comboIgnore ( 'node_modules/foo/bar.js' ); // true
comboIgnore ( 'dist/foo/bar.js' ); // true
comboIgnore ( 'test/foo/bar.js' ); // true
```

## License

MIT © Fabio Spampinato

---
_Source: https://npm.io/package/fast-ignore · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
