Enable, validate, and demonstrate the use of built-in style definitions (fixes #593).

This commit is contained in:
David Anson 2022-10-02 19:28:54 -07:00
parent eb05bac07d
commit c383aab383
3 changed files with 21 additions and 4 deletions

View file

@ -354,7 +354,7 @@ configuration object with all properties set to the default value.
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).
Example: Example of referencing a built-in style from JavaScript:
```js ```js
const options = { const options = {
@ -363,6 +363,14 @@ const options = {
}; };
``` ```
Example doing so from `.markdownlint.json` via `extends` (more on this below):
```json
{
"extends": "markdownlint/style/relaxed"
}
```
See the [style](style) directory for more samples. See the [style](style) directory for more samples.
See [markdownlint-config-schema.json](schema/markdownlint-config-schema.json) See [markdownlint-config-schema.json](schema/markdownlint-config-schema.json)

View file

@ -6,7 +6,10 @@
"main": "./lib/markdownlint.js", "main": "./lib/markdownlint.js",
"exports": { "exports": {
".": "./lib/markdownlint.js", ".": "./lib/markdownlint.js",
"./helpers": "./helpers/helpers.js" "./helpers": "./helpers/helpers.js",
"./style/all": "./style/all.json",
"./style/cirosantilli": "./style/cirosantilli.json",
"./style/relaxed": "./style/relaxed.json"
}, },
"types": "./lib/markdownlint.d.ts", "types": "./lib/markdownlint.d.ts",
"author": "David Anson (https://dlaa.me/)", "author": "David Anson (https://dlaa.me/)",

View file

@ -12,7 +12,8 @@ const pluginSup = require("markdown-it-sup");
const pluginTexMath = require("markdown-it-texmath"); const pluginTexMath = require("markdown-it-texmath");
const test = require("ava").default; const test = require("ava").default;
const tv4 = require("tv4"); const tv4 = require("tv4");
const { homepage, version } = require("../package.json"); const { "exports": packageExports, homepage, version } =
require("../package.json");
const markdownlint = require("../lib/markdownlint"); const markdownlint = require("../lib/markdownlint");
const constants = require("../lib/constants"); const constants = require("../lib/constants");
const rules = require("../lib/rules"); const rules = require("../lib/rules");
@ -430,11 +431,14 @@ test("enableTagMixedCase", (t) => new Promise((resolve) => {
})); }));
test("styleFiles", (t) => new Promise((resolve) => { test("styleFiles", (t) => new Promise((resolve) => {
t.plan(4); t.plan(7);
fs.readdir("./style", function readdir(err, files) { fs.readdir("./style", function readdir(err, files) {
t.falsy(err); t.falsy(err);
for (const file of files) { for (const file of files) {
t.truthy(require(path.join("../style", file)), "Unable to load/parse."); t.truthy(require(path.join("../style", file)), "Unable to load/parse.");
const exportValue = `./style/${file}`;
const exportKey = exportValue.replace(/\.json$/, "");
t.is(packageExports[exportKey], exportValue);
} }
resolve(); resolve();
}); });
@ -1402,6 +1406,8 @@ test("getVersion", (t) => {
test("constants", (t) => { test("constants", (t) => {
t.plan(2); t.plan(2);
// @ts-ignore
t.is(constants.homepage, homepage); t.is(constants.homepage, homepage);
// @ts-ignore
t.is(constants.version, version); t.is(constants.version, version);
}); });