commit-spell
unites Atom's multi-platform spellchecker (bindings for
Hunspell, Windows Spell Check API, and NSSpellChecker), VSCode's Code Spell
Checker dictionaries, custom local and user dictionaries, and words from
your repository's commit history to spellcheck your commit messages as you craft
them.
npm install --save-dev commit-spell
[additional details]
Note: you probably don't need to read through this! This information is primarily useful for those attempting to bundle this package or for people who have an opinion on ESM versus CJS.
This is a dual CJS2/ES module package. That means this package exposes both CJS2 and ESM entry points.
Loading this package via require(...)
will cause Node and Webpack to use the
CJS2 bundle entry point, disable tree shaking in Webpack
4, and lead to larger bundles in Webpack 5. Alternatively, loading this package
via import { ... } from ...
or import(...)
will cause Node to use the ESM
entry point in versions that support it, as will Webpack.
Using the import
syntax is the modern, preferred choice.
For backwards compatibility with Webpack 4 (compat with Webpack 4 is not
guaranteed!) and Node versions < 14, package.json
retains the
module
key, which points to the ESM entry point, and the
main
key, which points to the CJS2 entry point explicitly
(using the .js file extension). For Webpack 5 and Node versions >= 14,
package.json
includes the exports
key,
which points to both entry points explicitly.
Though package.json
includes
{ "type": "commonjs"}
, note that the ESM entry points are ES
module (.mjs
) files. package.json
also includes the
sideEffects
key, which is false
for optimal tree
shaking, and the types
key, which points to a TypeScript
declarations file.
Additionally, this package does not maintain shared state and so does not exhibit the dual package hazard.
git
is required to runcommit-spell
.
commit-spell
can be run by hand—where the current working directory is the
root of your repository—or as part of a commit-msg git hook:
npx commit-spell
When run, it looks for a <current working directory>/.git/COMMIT_EDITMSG
file
and checks its (utf-8) contents for spelling errors. In addition to the
platform-specific spellchecker and words in the text-extensions dictionary,
a word can be whitelisted by adding it to one of the following:
<current working directory>/.spellcheckignore
or<user home directory>/.config/_spellcheckignore
on a new line<current working directory>/package.json
as a key under dependencies, devDependencies, peerDependencies, or scripts<current working directory>/.vscode/settings.json
or<user home directory>/.config/Code/User/settings.json
as an element of cSpell.words, cSpell.userWords, or cSpell.ignoreWords- Any word appearing in the output of
git log --format="%B" HEAD~1
Additionally, you can use --help
to get help text output, --version
to get
the current version, --silent
to prevent all output, and --show-all
to show
all potential typos.
This repository uses itself to spellcheck its own commits via husky.
This package can be imported and run directly in source without spawning a child process or calling a CLI. This is useful for, for instance, composing multiple yargs-based CLI tools together.
import { configureProgram } from 'commit-spell';
const { program, parse } = configureProgram();
// `program` is a yargs instance
// `parse` is an async function that will (eventually) call program.parse(...)
await parse([]);
Further documentation can be found under docs/
.
New issues and pull requests are always welcome and greatly appreciated! 🤩 Just as well, you can star 🌟 this project to let me know you found it useful! ✊🏿 Thank you!
See CONTRIBUTING.md and SUPPORT.md for more information.