MarkdownLint is a Node.js style checker and linting tool for markdown.
Here, we use the command-line package: https://github.com/DavidAnson/markdownlint-cli2
npm install markdownlint-cli2 --save-dev- To check for errors (using
#to negate the glob):
markdownlint-cli2 '**/*.md' '#{node_modules,vendor}'- To automatically fix errors:
markdownlint-cli2 '**/*.md' '#{node_modules,vendor} --fix'Add helper scripts to package.json:
"scripts": {
"lint:md": "markdownlint-cli2",
"lint:md:fix": "markdownlint-cli2 --fix"
},There is no easy way to simply.
To use a markdownlint-cli2 docker image:
docker run -v $PWD:/workdir davidanson/markdownlint-cli2:latest "**/*.md" "#node_modules"markdownlint-cli2 can use standard markdownlint configuration files.
However, cli2 versions allow for complete control of markdownlint-cli2 and the vscode extension.
@see https://github.com/DavidAnson/markdownlint-cli2#configuration
The order of preference is:
- cli2:
.markdownlint-cli2.jsonc,.markdownlint-cli2.yaml,.markdownlint-cli2.cjs - JSON:
.markdownlint.jsonc,.markdownlint.json - YML:
.markdownlint.yaml,.markdownlint.yml - JavaScript:
.markdownlint-cli2.mjs,.markdownlint.cjs,.markdownlint.mjs
# .markdownlint-cli2.yml
config:
ul-style:
style: 'dash'
ul-indent:
indent: 2
line-length:
line_length: 120 # Line length 80 is far to short
no-trailing-punctuation:
punctuation: '.,;:!。,;:' # List of not allowed
ol-prefix:
style: 'one_or_ordered' # Ordered list item prefix
no-inline-html: false # Allow inline HTML
no-emphasis-as-heading: false # Emphasis used instead of a heading
# Define glob expressions to use (only valid at root)
globs:
- "**/*.md"
# Ignore files referenced by .gitignore (only valid at root)
gitignore: true# .markdownlint.yml
ul-style:
style: 'dash'
ul-indent:
indent: 4
line-length:
line_length: 120
no-trailing-punctuation:
punctuation: ".,;:!。,;:" # List of not allowed
ol-prefix:
style: "one_or_ordered" # Ordered list item prefix
no-inline-html: false # Allow inline HTML
no-emphasis-as-heading: false # Emphasis used instead of a heading- Disable all rules:
<!-- markdownlint-disable --> - Enable all rules:
<!-- markdownlint-enable --> - Disable all rules for the current line:
<!-- markdownlint-disable-line --> - Disable all rules for the next line:
<!-- markdownlint-disable-next-line --> - Disable one or more rules by name:
<!-- markdownlint-disable MD001 MD005 --> - Enable one or more rules by name:
<!-- markdownlint-enable MD001 MD005 --> - Disable one or more rules by name for the current line:
<!-- markdownlint-disable-line MD001 MD005 --> - Disable one or more rules by name for the next line:
<!-- markdownlint-disable-next-line MD001 MD005 --> - Capture the current rule configuration:
<!-- markdownlint-capture --> - Restore the captured rule configuration:
<!-- markdownlint-restore -->
Homepage: DavidAnson.vscode-markdownlint
"[markdown]": {
"editor.formatOnSave": true,
"editor.formatOnPaste": true
},
"editor.codeActionsOnSave": {
"source.fixAll.markdownlint": true
}
"markdownlint.run": "onType"