Globs

Globs are used extensively by CSpell to determine which files to check and what settings to apply.

Here are some of the places globs are used:

Location Mode Note
files[] strict The glob patterns used to search for files to spell check.
ignorePaths[] loose Glob patterns used to exclude files and directories from being checked. ! are only partially supported due to an issue with the Glob library1
overrides[].filename loose Used to apply configuration settings to files whose path matches the glob

Mode - Strict

Strict mode is used to explicitly select files to be checked. It gives more nuanced control over the file search process.

Examples:

Glob Meaning
*.md Only check the Markdown files in the current directory. It will not scan subdirectories.
*.{md,js} or {*.md,*.js} Only check the Markdown or JavaScript files in the current directory. It will not scan subdirectories.
**/*.md Scan all directories (except hidden ones starting with .) looking for markdown files.
**/{*,.*}/**/*.md Scan all directories including a hidden one looking for markdown files. Does not match *.md in root.
src/** Scan the src directory looking for all non-hidden files.
** Use the --dot option to include hidden directories or files.
**/.* Scan for only hidden files.

Mode - Loose

Loose mode is used to match files that have been found. It is designed to emulate .gitignore rules closely. By default, loose mode matches hidden files and directories.

Examples:

Glob Meaning
*.md Will match against any path containing *.md
node_modules Will match against any path containing node_modules
/node_modules Matches against ./node_modules and all contained files. It will not match nested paths like: ./package/node_modules/*
/node_modules/ Matches the ./node_modules directory and any files it contains.
/node_modules/** Same as /node_modules/
test Matches any directory or file called test. Equivalent to using both **/test and **/test/**.
**/test/** Similar to test, but only matches paths contained in a test directory.