Configuration
CSpell's behavior can be controlled through a config file.
By default it looks for any of the following files:
.cspell.json
cspell.json
.cSpell.json
cSpell.json
cspell.config.js
cspell.config.cjs
cspell.config.json
cspell.config.yaml
cspell.config.yml
cspell.yaml
cspell.yml
package.json
Or you can specify a path to a config file with the --config <path>
argument on the command line.
cspell.json
Example cspell.json
file
// cSpell Settings
{
// Version of the setting file. Always 0.2
"version": "0.2",
// language - current active spelling language
"language": "en",
// words - list of words to be always considered correct
"words": [
"mkdirp",
"tsmerge",
"githubusercontent",
"streetsidesoftware",
"vsmarketplacebadge",
"visualstudio"
],
// flagWords - list of words to be always considered incorrect
// This is useful for offensive words and common spelling errors.
// For example "hte" should be "the"
"flagWords": [
"hte"
]
}
cspell.json sections
-
version
- currently always 0.2 - controls how the settings in the configuration file behave. -
language
- this specifies the language locale to use in choosing the general dictionary. For example:"language": "en-GB"
tells cspell to use British English instead of US English. -
words
- a list of words to be considered correct. -
flagWords
- a list of words to be always considered incorrect -
ignoreWords
- a list of words to be ignored (even if they are in the flagWords). -
ignorePaths
- a list of globs to specify which files are to be ignored.Example
"ignorePaths": ["node_modules/**"]
will cause cspell to ignore anything in the
node_modules
directory. -
maxNumberOfProblems
- defaults to 100 per file. -
minWordLength
- defaults to 4 - the minimum length of a word before it is checked. -
allowCompoundWords
- defaults to false; set to true to allow compound words by default. -
dictionaries
- list of the names of the dictionaries to use. See Dictionaries. -
dictionaryDefinitions
- this list defines any custom dictionaries to use. This is how you can include other languages like Spanish.Example
"language": "en",
// Dictionaries "spanish", "ruby", and "corp-terms" will always be checked.
// Including "spanish" in the list of dictionaries means both Spanish and English
// words will be considered correct.
"dictionaries": ["spanish", "ruby", "corp-terms", "fonts"],
// Define each dictionary:
// - Relative paths are relative to the config file.
// - URLs will be retrieved via HTTP GET
"dictionaryDefinitions": [
{ "name": "spanish", "path": "./spanish-words.txt"},
{ "name": "ruby", "path": "./ruby.txt"},
{
"name": "corp-terms",
"path": "https://shared-company-repository/cspell-terms.txt"
},
], -
ignoreRegExpList
- list of patterns to be ignored -
includeRegExpList
- (Advanced) limits the text checked to be only that matching the expressions in the list. -
patterns
- this allows you to define named patterns to be used withignoreRegExpList
andincludeRegExpList
.Example
"patterns": [
{
"name": "comment-single-line",
"pattern": "/#.*/g"
},
{
"name": "comment-multi-line",
"pattern": "/(?:\\/\\*[\\s\\S]*?\\*\\/)/g"
},
// You can also combine multiple named patterns into one single named pattern
{
"name": "comments",
"pattern": ["comment-single-line", "comment-multi-line"]
}
],
"ignoreRegExpList": ["comments"] -
languageSettings
- this allow for per programming language configuration settings. See LanguageSettings.
package.json
It is possible to store CSpell configuration in the package.json
file of a project. CSpell looks
for the configuration in the cspell
field of the .json
file.
{
"name": "cspell-docs",
"description": "Documentation for CSpell",
// ...
"cspell": {
"version": "0.2",
"useGitignore": true
}
}