Toparsean`.npmignore` file, you should use `minimatch`, because an `.npmignore` file is parsed by npm using `minimatch`anditdoesnotworkinthe.gitignoreway.
Since`4.0.0`, ignore will no longer support `node < 6` by default, to use in node < 6, `require('ignore/legacy')`.Fordetails,see[CHANGELOG](https://github.com/kaelzhang/node-ignore/blob/master/CHANGELOG.md).
##TableOfMainContents
-[Usage](#usage)
-[`Pathname`Conventions](#pathname-conventions)
-SeeAlso:
-[`glob-gitignore`](https://www.npmjs.com/package/glob-gitignore) matches files using patterns and filters them according to gitignore rules.
// if the code above runs on windows, the result will be
// ['.abc\\d\\e.js']
```
## Why another ignore?
- `ignore` is a standalone module, and is much simpler so that it could easy work with other programs, unlike [isaacs](https://npmjs.org/~isaacs)'s [fstream-ignore](https://npmjs.org/package/fstream-ignore) which must work with the modules of the fstream family.
- `ignore` only contains utility methods to filter paths according to the specified ignore rules, so
- `ignore` never try to find out ignore rules by traversing directories or fetching from git configurations.
- `ignore` don't cares about sub-modules of git projects.
- Exactly according to [gitignore man page](http://git-scm.com/docs/gitignore), fixes some known matching issues of fstream-ignore, such as:
- '`/*.js`' should only match '`a.js`', but not '`abc/a.js`'.
Noticethatalinestartingwith`'#'`(hash) is treated as a comment. Put a backslash (`'\'`)infrontofthefirsthashforpatternsthatbeginwithahash,ifyouwanttoignoreafilewithahashatthebeginningofthefilename.
```js
ignore().add('#abc').ignores('#abc')// false
ignore().add('\\#abc').ignores('#abc')// true
```
`pattern` could either be a line of ignore pattern or a string of multiple ignore patterns, which means we could just `ignore().add()`thecontentofaignorefile:
Similarasthe`core.ignorecase` option of [git-config](https://git-scm.com/docs/git-config), `node-ignore` will be case insensitive if `options.ignorecase` is set to `true`(thedefaultvalue),otherwisecasesensitive.
Thisoptionbringsbackwardcompatibilitywithprojectswhichbasedon`ignore@4.x`. If `options.allowRelativePaths` is `true`, `ignore` will not check whether the given path to be tested is [`path.relative()`d](#pathname-conventions).
However,passingarelativepath,suchas`'./foo'` or `'../foo'`,totestifitisignoredornotisnotagoodpractise,whichmightleadtounexpectedbehavior
```js
ignore({
allowRelativePaths:true
}).ignores('../foo/bar.js')// And it will not throw
```
****
#UpgradeGuide
##Upgrade4.x->5.x
Since`5.0.0`, if an invalid `Pathname` passed into `ig.ignores()`, an error will be thrown, unless `options.allowRelative = true` is passed to the `Ignore`factory.