CLI for cspell; A Spelling Checker for Code!
npm install cspell-cliTo check all files under the current directory, run:
```
npx cspell-cli --gitignore .
This repository enables using cspell as a pre-commit hook.
`yaml`.pre-commit-config.yaml
repos:
- repo: https://github.com/streetsidesoftware/cspell-cli
rev: v9.6.0
hooks:
- id: cspell # Spell check changed files
- id: cspell # Spell check the commit message
name: check commit message spelling
args:
- --no-must-find-files
- --no-progress
- --no-summary
- --files
- .git/COMMIT_EDITMSG
stages: [commit-msg]
always_run: true # This might not be necessary.
To use a custom dictionary with the pre-commit hook, create either a cspell.config.yaml or cspell.json file in your project's root directory.
cspell.config.yaml
`yaml`
dictionaryDefinitions:
- name: myWords
path: ./path/to/cSpell_dict.txt
addWords: true
dictionaries:
- myWords
cSpell.json
`json`
{
"dictionaryDefinitions": [
{
"name": "myWords",
"path": "./path/to/cSpell_dict.txt",
"addWords": true
}
],
"dictionaries": ["myWords"]
}
If you installed the Code Spell Checker extension for VS Code, this can be done automatically from the command palette by running "Spell: Create a CSpell configuration file".
This repo also allows installing the cspell-cli directly from GitHub:
``
npm install -g git+https://github.com/streetsidesoftware/cspell-cli
`sh`
docker run -v $PWD:/workdir ghcr.io/streetsidesoftware/cspell:latest .
See Extending the Docker Container to include German
cspell --help:
`
Usage: cspell [options] [command]
Spelling Checker for Code
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
lint [options] [globs...] Check spelling
trace [options] [words...] Trace words -- Search for words in the
configuration and dictionaries.
check [options]
result. The full file is displayed in
color.
suggestions|sug [options] [words...] Spelling Suggestions for words.
init [options] Initialize a CSpell configuration file.
link Link dictionaries and other settings to
the cspell global config.
dictionaries [options] List dictionaries
help [command] display help for command
`
lint is the default command.
cspell lint --help:
`
Usage: cspell lint [options] [globs...] [file://
Patterns:
- [globs...] Glob Patterns
- [stdin] Read from "stdin" assume text file.
- [stdin://
- [file://
Examples:
cspell . Recursively check all files.
cspell lint . The same as "cspell ."
cspell "*.js" Check all .js files in the current directory
cspell "*/.js" Check all .js files recursively
cspell "src/*/.js" Only check .js under src
cspell "/.txt" "/.js" Check both .js and .txt files.
cspell "*/.{txt,js,md}" Check .txt, .js, and .md files.
cat LICENSE | cspell stdin Check stdin
cspell stdin://docs/doc.md Check stdin as if it was "./docs/doc.md"
Check spelling
Options:
-c, --config
looks for cspell.json in the current directory.
--no-config-search Disable automatic searching for additional
configuration files in parent directories. Only
the specified config file (if any) will be
used.
--stop-config-search-at
for configuration files when walking up from
the files being checked. Useful for limiting
config inheritance.
-v, --verbose Display more information about the files being
checked. Add more than one -v for increased
verbosity.
--locale
and French, or "en-GB" for British English.
--language-id
extensions. i.e. "php" or "scala"
--words-only Only output the words not found in the
dictionaries.
-u, --unique Only output the first instance of a word not
found in the dictionaries.
-e, --exclude
option can be used multiple times to add
multiple globs.
--file-list
The list is filtered against the glob file
patterns. Note: the format is 1 file path per
line.
--file [file...] Specify files to spell check. They are filtered
by the [globs...].
--no-issues Do not show the spelling errors.
--no-progress Turn off progress messages
--no-summary Turn off summary message in console.
-s, --silent Silent mode, suppress error messages.
--no-exit-code Do not return an exit code if issues are found.
--quiet Only show spelling issues or errors.
--fail-fast Exit after first file with an issue or error.
--continue-on-error Continue processing files even if there is a
configuration error.
-r, --root
--no-relative Issues are displayed with absolute path instead
of relative to the root.
--show-context Show the surrounding text around an issue.
--show-suggestions Show spelling suggestions.
--no-show-suggestions Do not show spelling suggestions or fixes.
--no-must-find-files Do not error if no files are found.
--cache Use cache to only check changed files.
--no-cache Do not use cache.
--cache-reset Reset the cache file.
--cache-strategy
(choices: "content", "metadata", default:
"content")
--cache-location
".cspellcache")
--dot Include files and directories starting with .
(period) when matching globs.
--gitignore Ignore files matching glob patterns found in
.gitignore files.
--no-gitignore Do NOT use .gitignore files.
--gitignore-root
root.
--validate-directives Validate in-document CSpell directives.
--max-file-size
1GB
--color Force color.
--no-color Turn off color.
--no-default-configuration Do not load the default configuration and
dictionaries.
--dictionary
--disable-dictionary
--reporter
--report
"all", "simple", "typos", "flagged")
--issue-template [template] Use a custom issue template. See --help
--issue-template for details.
-h, --help display help for command
More Examples:
cspell "*/.js" --reporter @cspell/cspell-json-reporter
This will spell check all ".js" files recursively and use
"@cspell/cspell-json-reporter".
cspell . --reporter default
This will force the default reporter to be used overriding
any reporters defined in the configuration.
cspell . --reporter ./
Use a custom reporter. See API for details.
cspell "*.md" --exclude CHANGELOG.md --files README.md CHANGELOG.md
Spell check only check "README.md" but NOT "CHANGELOG.md".
cspell "/*.md" --no-must-find-files --files $FILES
Only spell check the "/*.md" files in $FILES,
where $FILES is a shell variable that contains the list of files.
cspell --help --verbose
Show all options including hidden options.
References:
https://cspell.org
https://github.com/streetsidesoftware/cspell
`
cspell trace --help:
`
Usage: cspell trace [options] [words...]
Trace words -- Search for words in the configuration and dictionaries.
Options:
-c, --config
looks for cspell.json in the current directory.
--locale
French, or "en-GB" for British English.
--language-id
--allow-compound-words Turn on allowCompoundWords
--no-allow-compound-words Turn off allowCompoundWords
--ignore-case Ignore case and accents when searching for words.
--no-ignore-case Do not ignore case and accents when searching for
words.
--dictionary
times.
--dictionary-path
(choices: "hide", "short", "long", "full",
default: Display most of the path.)
--stdin Read words from stdin.
--all Show all dictionaries.
--only-found Show only dictionaries that have the words.
--color Force color.
--no-color Turn off color.
--no-default-configuration Do not load the default configuration and
dictionaries.
-h, --help display help for command
`
cspell check --help:
`
Usage: cspell check [options]
Spell check file(s) and display the result. The full file is displayed in color.
Options:
-c, --config
looks for cspell.json in the current directory.
--validate-directives Validate in-document CSpell directives.
--no-validate-directives Do not validate in-document CSpell directives.
--no-color Turn off color.
--color Force color
--no-exit-code Do not return an exit code if issues are found.
--no-default-configuration Do not load the default configuration and
dictionaries.
-h, --help display help for command
`
cspell suggestions --help:
`
Usage: cspell suggestions|sug [options] [words...]
Spelling Suggestions for words.
Options:
-c, --config
cspell looks for cspell.json in the
current directory.
--locale
English and French, or "en-GB" for
British English.
--language-id
"scala".
-s, --no-strict Ignore case and accents when searching
for words.
--ignore-case Alias of --no-strict.
--num-changes
(default: 4)
--num-suggestions
--no-include-ties Force the number of suggested to be
limited, by not including suggestions
that have the same edit cost.
--stdin Use stdin for input.
--repl REPL interface for looking up
suggestions.
-v, --verbose Show detailed output.
-d, --dictionary
dictionaries specified will be used.
--dictionaries
dictionaries specified will be used.
--no-color Turn off color.
--color Force color
-h, --help display help for command
`
cspell link --help:
`
Usage: cspell link [options] [command]
Link dictionaries and other settings to the cspell global config.
Options:
-h, --help display help for command
Commands:
list|ls List currently linked configurations.
add|a
global config.
remove|r
config.
help [command] display help for command
`
The major version of cspell-cli tries to match the major version of cspell.
minor and patch versioning goes up independently from cspell. Where possible, the minor version should match cspell`.