Add instructions for "Validating Configuration" to explain how to use the JSON Schema with configuration objects/files.

This commit is contained in:
David Anson 2023-11-26 20:10:31 -08:00
parent 7df23eed2c
commit 9270513f14
3 changed files with 32 additions and 1 deletions

View file

@ -377,6 +377,9 @@ See [.markdownlint.jsonc](schema/.markdownlint.jsonc) and/or
[.markdownlint.yaml](schema/.markdownlint.yaml) for an example [.markdownlint.yaml](schema/.markdownlint.yaml) for an example
configuration object with all properties set to the default value. configuration object with all properties set to the default value.
See [ValidatingConfiguration.md](schema/ValidatingConfiguration.md) for ways to
validate configuration.
Sets of rules (known as a "style") can be stored separately and loaded Sets of rules (known as a "style") can be stored separately and loaded
as [JSON](https://en.wikipedia.org/wiki/JSON). as [JSON](https://en.wikipedia.org/wiki/JSON).

View file

@ -0,0 +1,28 @@
# Validating Configuration
A [JSON Schema][json-schema] is provided to enable validating configuration
objects: [`markdownlint-config-schema.json`][markdownlint-config-schema]
Some editors automatically use a JSON Schema with files that reference it. For
example, a `.markdownlint.json` file with:
```json
"$schema": "https://raw.githubusercontent.com/DavidAnson/markdownlint/main/schema/markdownlint-config-schema.json"
```
A JSON Schema validator can be used to check configuration files like so:
```bash
npx ajv-cli validate -s ./markdownlint/schema/markdownlint-config-schema.json -d "**/.markdownlint.{json,yaml}" --strict=false
```
By default, any rule name is valid in order to allow for custom rules. To ensure
that only built-in rules are used, change the value of `#/additionalProperties`
(at the bottom of the schema file) to `false` before validating:
```json
"additionalProperties": false
```
[json-schema]: https://json-schema.org
[markdownlint-config-schema]: markdownlint-config-schema.json

View file

@ -83,7 +83,7 @@ test("projectFiles", (t) => {
"schema/*.md" "schema/*.md"
])) ]))
.then((files) => { .then((files) => {
t.is(files.length, 57); t.is(files.length, 58);
const options = { const options = {
files, files,
"config": require("../.markdownlint.json") "config": require("../.markdownlint.json")