githubEdit

ignore

ignore

ignore is a manager, filter and parser which implemented in pure JavaScript according to the .gitignore specarrow-up-right.

Pay attention that minimatcharrow-up-right does not work in the gitignore way. To filter filenames according to .gitignore file, I recommend this module.

Tested on

  • Linux + Node: 0.8 - 7.x

  • Windows + Node: 0.10 - 7.x, node < 0.10 is not tested due to the lack of support of appveyor.

Actually, ignore does not rely on any versions of node specially.

Since 4.0.0, ignore will no longer support node < 6 by default, to use in node < 6, require('ignore/legacy'). For details, see CHANGELOGarrow-up-right.

Table Of Main Contents

Usage

Filter the given paths

As the filter function

Win32 paths will be handled

Why another ignore?

  • ignore is a standalone module, and is much simpler so that it could easy work with other programs, unlike isaacsarrow-up-right's fstream-ignorearrow-up-right 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 pagearrow-up-right, fixes some known matching issues of fstream-ignore, such as:

    • '/*.js' should only match 'a.js', but not 'abc/a.js'.

    • '**/foo' should match 'foo' anywhere.

    • Prevent re-including a file if a parent directory of that file is excluded.

    • Handle trailing whitespaces:

      • 'a '(one space) should not match 'a '(two spaces).

      • 'a \ ' matches 'a '

    • All test cases are verified with the result of git check-ignore.

Methods

.add(pattern: string | Ignore): this

.add(patterns: Array<string | Ignore>): this

  • pattern String | Ignore An ignore pattern string, or the Ignore instance

  • patterns Array<String | Ignore> Array of ignore patterns.

Adds a rule or several rules to the current manager.

Returns this

Notice that a line starting with '#'(hash) is treated as a comment. Put a backslash ('\') in front of the first hash for patterns that begin with a hash, if you want to ignore a file with a hash at the beginning of the filename.

pattern could either be a line of ignore pattern or a string of multiple ignore patterns, which means we could just ignore().add() the content of a ignore file:

pattern could also be an ignore instance, so that we could easily inherit the rules of another Ignore instance.

.addIgnoreFile(path)

REMOVED in 3.x for now.

To upgrade ignore@2.x up to 3.x, use

instead.

.filter(paths: Array): Array

Filters the given array of pathnames, and returns the filtered array.

  • paths Array.<Pathname> The array of pathnames to be filtered.

Pathname Conventions:

1. Pathname should be a path.relative()d pathname

Pathname should be a string that have been path.join()ed, or the return value of path.relative() to the current directory.

In other words, each Pathname here should be a relative path to the directory of the gitignore rules.

Suppose the dir structure is:

Then the paths might be like this:

Usually, you could use globarrow-up-right with option.mark = true to fetch the structure of the current directory:

2. filenames and dirnames

node-ignore does NO fs.stat during path matching, so for the example below:

Specially for people who develop some library based on node-ignore, it is important to understand that.

.ignores(pathname: Pathname): boolean

new in 3.2.0

Returns Boolean whether pathname should be ignored.

.createFilter()

Creates a filter function which could filter an array of paths with Array.prototype.filter.

Returns function(path) the filter function.

options.ignorecase since 4.0.0

Similar as the core.ignorecase option of git-configarrow-up-right, node-ignore will be case insensitive if options.ignorecase is set to true (default value), otherwise case sensitive.


Upgrade Guide

Upgrade 2.x -> 3.x

  • All options of 2.x are unnecessary and removed, so just remove them.

  • ignore() instance is no longer an EventEmitterarrow-up-right, and all events are unnecessary and removed.

  • .addIgnoreFile() is removed, see the .addIgnoreFile section for details.

Upgrade 3.x -> 4.x

Since 4.0.0, ignore will no longer support node < 6, to use ignore in node < 6:


Collaborators

Last updated