A fork of Vale, the command-line linter for prose. For everything Vale itself does, see the upstream repository and the Vale docs.
Currently pinned on upstream version: v3.26.0
Fork releases are tagged v<upstream base>-fza.<N>, for example v3.26.0-fza.4.
macOS and Linux, with Homebrew:
brew install fza/tap/valeIf upstream's vale formula is installed, remove it first with brew uninstall vale.
Prebuilt archives for macOS and Linux (amd64, arm64) are attached to each release.
- A
valedirective works inside a code comment, and also as a tag pair:<vale off>…</vale off>. - Code spans, fenced blocks, URLs and the name that opens a doc comment are masked, so rules do not read them as prose.
- String literals in Go, PHP, TypeScript, JavaScript, Vue and Svelte are linted when a rule uses
the
literalscope (literal.line,literal.block). - These files are read as code, so only their comments are linted:
- shell scripts:
.sh,.bash,.zsh,.ksh - build files:
Makefile,makefile,GNUmakefile,.mk,.mak,.make - components:
.vue,.svelte
- shell scripts:
- PHPDoc tags such as
@param string $nameare not linted as prose. CommentedCode = lint|mask|flagin a glob section sets what happens to comment lines that are code.lintis the default.maskhides them from every rule, andflagalso reports them asVale.CommentedCode.
- A
.vale.iniin any directory being linted adds glob sections for that directory. Use--no-nestedto ignore these files. - A setting for a rule group (
House.Literals = NO) applies to every rule in that group.
- A vocabulary accepts all the spellings it lists, for example both
mariadbandMariaDB. vale syncaccepts a fork build for a package'svale_version.
- Results for unchanged files come from a cache. Use
--no-cacheto skip it,cache-cleanto empty it, andVALE_CACHEto move it. - All input paths are linted by one worker pool.
- Capitalization rules match the vocabulary faster.
- Built-in rules that the configuration turns off everywhere are not built.