Vale: Your Style, Our Editor
![release](https://img.shields.io/github/release/errata-ai/vale.svg)
![vale-demo](https://user-images.githubusercontent.com/8785025/39656657-59e62c26-4fb6-11e8-9f48-ba230400ed55.png)
Vale is a natural language linter that supports plain text, markup (Markdown, reStructuredText, AsciiDoc, and HTML), and source code comments. Vale doesn't attempt to offer a one-size-fits-all collection of rules—instead, it strives to make customization as easy as possible.
Check out project website to learn more!
Installation
There are a few options to choose from:
-
Homebrew:
$ brew tap ValeLint/vale
$ brew install vale
-
Chocolatey:
C:\> choco install vale
-
A Windows Installer package (.msi
), which you'll find on the releases page.
-
Manually on Windows, macOS, or Linux by downloading an executable from the releases page.
Plugins for other software
Usage
Using the built-in styles
Vale ships with styles for proselint, write-good, and Joblint. The benefits of using these styles over their original implementations include:
- Improved support for markup, including the ability to ignore code and target only certain sections of text (e.g., checking headers for a specific capitalization style).
- No need to install and configure npm (Node.js), pip (Python), or other language-specific tools. With Vale, you get all the functionality in a single, standalone binary available for Windows, macOS, and Linux.
- Easily combine, mismatch, or otherwise customize each style.
To use one of these styles, you'll need to create a config file alone the lines of the following:
# This goes in a file named either `.vale.ini` or `_vale.ini`.
StylesPath = path/to/some/directory
MinAlertLevel = warning # suggestion, warning or error
# Only Markdown and .txt files; change to whatever you're using.
[*.{md,txt}]
# List of styles to load.
BasedOnStyles = proselint, write-good, Joblint
# Style.Rule = {YES, NO, suggestion, warning, error} to
# enable/disable a rule or change its level.
write-good.E-Prime = NO
Creating your own style
While the built-in styles are useful, Vale is really designed to meet custom needs. This is done by using Vale's extension points (called "checks") that can be customized to perform many different kinds of tasks, including calculating readability, measuring sentence length, and enforcing a particular heading style. See the vale-boilerplate repository for a complete example of using Vale to enforce an external editorial style guide.
Using the CLI
Run Vale on a single file:
$ vale README.md
Run Vale on files matching a particular glob:
# Only lint Markdown and reStructuredText
$ vale --glob='*.{md,rst}' directory
Or exclude files matching a particular glob:
# Ignore all `.txt` files
$ vale --glob='!*.txt' directory
Pipe input to Vale:
$ echo 'this is some very interesting text' | vale
Run Vale on text with an assigned syntax:
$ vale --ext=.md 'this is some `very` interesting text'
See vale --help
and Configuration for more information.