@humanwhocodes/config-array
Advanced tools
Comparing version 0.11.3 to 0.11.4
30
api.js
@@ -569,3 +569,24 @@ 'use strict'; | ||
if (config.ignores && Object.keys(config).length === 1) { | ||
result.push(...config.ignores); | ||
/* | ||
* If there are directory ignores, then we need to double up | ||
* the patterns to be ignored. For instance, `foo` will also | ||
* need `foo/**` in order to account for subdirectories. | ||
*/ | ||
config.ignores.forEach(ignore => { | ||
result.push(ignore); | ||
if (typeof ignore === 'string') { | ||
// directories should work with or without a trailing slash | ||
if (ignore.endsWith('/')) { | ||
result.push(ignore.slice(0, ignore.length - 1)); | ||
result.push(ignore + '**'); | ||
} else if (!ignore.endsWith('*')) { | ||
result.push(ignore + '/**'); | ||
} | ||
} | ||
}); | ||
} | ||
@@ -834,3 +855,3 @@ } | ||
const relativeDirectoryPath = path.relative(this.basePath, directoryPath) + '/'; | ||
const relativeDirectoryPath = path.relative(this.basePath, directoryPath); | ||
if (relativeDirectoryPath.startsWith('..')) { | ||
@@ -846,5 +867,6 @@ return true; | ||
} | ||
// first check non-/** paths | ||
const result = shouldIgnorePath( | ||
this.ignores.filter(matcher => typeof matcher === 'function' || !matcher.endsWith('/**')), | ||
this.ignores, //.filter(matcher => typeof matcher === "function" || !matcher.endsWith("/**")), | ||
directoryPath, | ||
@@ -851,0 +873,0 @@ relativeDirectoryPath |
# Changelog | ||
## [0.11.4](https://github.com/humanwhocodes/config-array/compare/v0.11.3...v0.11.4) (2022-10-14) | ||
### Bug Fixes | ||
* Ensure subdirectories of ignored directories are ignored ([0df450e](https://github.com/humanwhocodes/config-array/commit/0df450eabeb595ae22fe680ce3320dc47edb1e66)) | ||
## [0.11.3](https://github.com/humanwhocodes/config-array/compare/v0.11.2...v0.11.3) (2022-10-13) | ||
@@ -4,0 +11,0 @@ |
{ | ||
"name": "@humanwhocodes/config-array", | ||
"version": "0.11.3", | ||
"version": "0.11.4", | ||
"description": "Glob-based configuration matching.", | ||
@@ -5,0 +5,0 @@ "author": "Nicholas C. Zakas", |
@@ -293,2 +293,34 @@ # Config Array | ||
## Determining Ignored Paths | ||
You can determine if a file is ignored by using the `isFileIgnored()` method and passing in the absolute path of any file, as in this example: | ||
```js | ||
const ignored = configs.isFileIgnored('/foo/bar/baz.txt'); | ||
``` | ||
A file is considered ignored if any of the following is true: | ||
* **It's parent directory is ignored.** For example, if `foo` is in `ignores`, then `foo/a.js` is considered ignored. | ||
* **It has an ancestor directory that is ignored.** For example, if `foo` is in `ignores`, then `foo/baz/a.js` is considered ignored. | ||
* **It matches an ignored file pattern.** For example, if `**/a.js` is in `ignores`, then `foo/a.js` and `foo/baz/a.js` are considered ignored. | ||
* **If it matches an entry in `files` and also in `ignores`.** For example, if `**/*.js` is in `files` and `**/a.js` is in `ignores`, then `foo/a.js` and `foo/baz/a.js` are considered ignored. | ||
* **The file is outside the `basePath`.** If the `basePath` is `/usr/me`, then `/foo/a.js` is considered ignored. | ||
For directories, use the `isDirectoryIgnored()` method and pass in the absolute path of any directory, as in this example: | ||
```js | ||
const ignored = configs.isDirectoryIgnored('/foo/bar/'); | ||
``` | ||
A directory is considered ignored if any of the following is true: | ||
* **It's parent directory is ignored.** For example, if `foo` is in `ignores`, then `foo/baz` is considered ignored. | ||
* **It has an ancestor directory that is ignored.** For example, if `foo` is in `ignores`, then `foo/bar/baz/a.js` is considered ignored. | ||
* **It matches and ignored file pattern.** For example, if `**/a.js` is in `ignores`, then `foo/a.js` and `foo/baz/a.js` are considered ignored. | ||
* **If it matches an entry in `files` and also in `ignores`.** For example, if `**/*.js` is in `files` and `**/a.js` is in `ignores`, then `foo/a.js` and `foo/baz/a.js` are considered ignored. | ||
* **The file is outside the `basePath`.** If the `basePath` is `/usr/me`, then `/foo/a.js` is considered ignored. | ||
**Important:** A pattern such as `foo/**` means that `foo` and `foo/` are *not* ignored whereas `foo/bar` is ignored. If you want to ignore `foo` and all of its subdirectories, use the pattern `foo` or `foo/` in `ignores`. | ||
## Caching Mechanisms | ||
@@ -295,0 +327,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
58399
710
343