What is ignore?
The ignore npm package is a utility for filtering files and directories according to the particular rules specified in .gitignore files. It can be used to create ignore patterns similar to how git handles .gitignore files, allowing developers to programmatically determine which files should be ignored based on these patterns.
What are ignore's main functionalities?
Add ignore rules
This feature allows you to add ignore rules, which can be a single string or an array of strings representing the patterns to ignore. The example demonstrates adding rules to ignore the .git directory and any files ending with .test.js.
const ignore = require('ignore');
const ig = ignore().add(['.git', '*.test.js']);
console.log(ig.ignores('example.test.js')); // true
Filter file paths
This feature provides a way to filter an array of file paths, removing any that match the ignore patterns. The code sample filters out 'example.test.js' because it matches the '*.test.js' pattern.
const ignore = require('ignore');
const ig = ignore().add('*.test.js');
const files = ['test.js', 'example.test.js', 'README.md'];
const filtered = files.filter(ig.createFilter());
console.log(filtered); // ['test.js', 'README.md']
Check if a file is ignored
This feature checks if a particular file would be ignored based on the current ignore rules. The code sample checks if 'example.test.js' is ignored (true) and if 'README.md' is ignored (false).
const ignore = require('ignore');
const ig = ignore().add('*.test.js');
console.log(ig.ignores('example.test.js')); // true
console.log(ig.ignores('README.md')); // false
Other packages similar to ignore
globby
Globby is a package that provides methods for matching files using glob patterns. It is built on top of the 'glob' package and supports multiple patterns. It is similar to ignore in that it can filter out files, but it uses glob patterns instead of .gitignore-style patterns.
minimatch
Minimatch is a minimal matching utility that implements the same wildcard rules as used by gitignore. It is similar to ignore in that it can be used to test if file paths match specified patterns, but it does not directly handle .gitignore files.
anymatch
Anymatch is a package that allows you to match strings against a list of patterns, which can be strings, regexes, or functions. It is similar to ignore in the sense that it can be used to determine if a string should be ignored or not, but it is more flexible in terms of the types of patterns it accepts.
Ignore
Ignore is a lightweight node.js readable stream (** won't implemented until 0.2.x **) to apply minimatch ignore rules (like .gitignore).
And it also has some utility methods to get filtered files and directories.
Installation
npm install ignore --save
Usage
var ignore = require('ignore');
Filter the given paths
var filtered = ignore({
ignore: [
'.abc/*',
'!.abc/d/'
]
}).filter([
'.abc',
'.abc/a.js',
'.abc/d/e.js'
]);
console.log(filtered);
Filter the cwd
ignore({
cwd: '/path/to/cwd/',
ignoreFiles: [
'.gitignore'
],
dot: true
}).filtered(function(err, files){
console.log(files);
});
Methods
ignore(options)
options.ignoreFiles Array
The array of ignore files.
options.ignore Array
The array of ignore rules.
Notice that the rules of options.ignore
will be added before the options.ignoreFiles
, so options.ignore
has much lower priority.
options.<xxxxx>
Other ignore-rules
options.
.filter(paths)
Filters the given array of pathnames, and returns the filtered array.
paths Array.<String>
The array of paths to be filtered
.filtered(callback)
Get all filtered pathnames(files and directories) inside the options.cwd
, according to the options.ignoreFiles
and options.ignore
.
callback function(err, paths)
paths Array
The array of filtered pathnames
.addRuleFiles(files)
files String|Array.<String>
Add one or more ignore files
.addRules(rules)
rules String|Array.<String>
Add one or more ignore rules