.vale.ini

Learn how to configure Vale for your specific needs.

After installing Vale, you’ll need to create a .vale.ini file in your project’s root directory. This file is used to configure Vale’s behavior and can be used to specify which rules to use, which directories to lint, and more.

The fastest way to get started with Vale is to use the Config Generatorarrow-up-right to create a .vale.ini configuration file.

Once you have your local .vale.ini created in the directory of your choice, run vale sync from the command line to initialize it:

$ cd some-project
# You'll need to create this file
$ cat .vale.ini
...
$ vale sync
...
$ ls styles
...
$ vale README.md

Check out our sample repositoryarrow-up-right for a complete example of the required components of a Vale configuration.

Vale’s configuration is read from a .vale.ini file. This file is INI-formattedarrow-up-right and consists of multiple sections: core settings, format associations, and format-specific settings:

Name
Type
Description

string

Path to all Vale-related resources.

string[]

List of packages to download and install.

string[]

List of vocabularies to load.

enum

Minimum alert level to display.

enum

List of inline-level HTML tags to ignore.

enum

List of block-level HTML tags to ignore.

Core settings appear at the top of the file and apply to the application itself rather than a specific file format.

Format associations allow you to associate an “unknown” file extension with a supported one:

In the example above, we’re telling Vale to treat MDX files as Markdown files. Note that this is merely an extension-level substitution and is not a means of adding support for a new file type.

Name
Type
Description

string[]

List of styles to load.

string[]

List regexes to ignore in block-level content.

string[]

List regexes to ignore in inline-level content.

string[2]

Comment delimiters to replace at runtime.

string

A version 1.0 XSL Transformation (XSLT).

Format-specific sections apply their settings only to files that match their associated glob pattern. For example, [*] matches all files while [*.{md,txt}] only matches files that end with either .md or .txt.

You can have as many format-specific sections as you’d like and settings defined under a more specific section will override those in [*].

See Globbing for more information on how to use glob patterns with Vale.

circle-exclamation

Vale expects its configuration to be in a file named .vale.ini or _vale.ini. It’ll start looking for this file in the directory that the vale command was run from and then search up the file tree until it finds one.

If no ancestor of the current directory has a configuration file, Vale will use a global configuration file (see below).

In addition to project-specific configurations, Vale also supports a global configuration file. The expected location of the global configuration depends on your operating system:

OS
Search Locations

Windows

%LOCALAPPDATA%\vale\.vale.ini

macOS

$HOME/Library/Application Support/vale/.vale.ini

Unix

$XDG_CONFIG_HOME/vale/.vale.ini

(Run the vale ls-dirs command to see the exact locations on your system.)

This is different from the other config-defining options (--config, VALE_CONFIG_PATH, etc.) in that it’s loaded in addition to, rather than instead of, any other configuration sources.

In other words, this config file is always loaded and is read after any other sources to allow for project-agnostic customization.

Vale’s configuration system supports using multiple configuration files at the same time. Typically, this is done in cases where you are contributing to a project that already has an established configuration but you want to make local changes.

For example, let’s say you’re working on a project that uses the following configuration:

Now, let’s say you want to add the write-good style to your local configuration.

Create a global configuration file—for macOS, this would be ~/Library/Application Support/vale/.vale.ini (see above for other OSes).

Now, when you run Vale, it will show results from both the ProjectStyle and write-good styles locally.

You’ll notice that multi-valued settings (like BasedOnStyles) are merged together, while single-valued settings (like MinAlertLevel) are overridden.

This allows you to contribute to projects with established styles while still being able to make local changes.