Although there was a system in place to warn users about invalid lint options, it failed to report those messages. * Additionally, fix several typographic errors in documentation. Closes GH-33. |
||
---|---|---|
doc | ||
lib | ||
script | ||
test | ||
.editorconfig | ||
.eslintignore | ||
.eslintrc | ||
.gitignore | ||
.jscs.json | ||
.remarkignore | ||
.remarkrc | ||
.travis.yml | ||
component.json | ||
history.md | ||
index.js | ||
LICENSE | ||
logo.svg | ||
package.json | ||
readme.md | ||
screen-shot.png |
remark-lint is a markdown code style linter. Another linter? Yes. Ensuring the markdown you (and contributors) write is of great quality will provide better rendering in all the different markdown parsers, and makes sure less refactoring is needed afterwards. What is quality? That’s up to you, but the defaults are sensible 👌.
remark-lint has lots of tests. Supports Node, io.js, and the browser. 100% coverage. 50+ rules. It’s built on remark, a powerful markdown processor powered by plugins (such as this one).
Table of Contents
- Installation
- Command line
- Programmatic
- Rules
- Configuring remark-lint
- Using remark to fix your markdown
- Editor Integrations
- List of External Rules
- Related
- License
Installation
npm:
npm install remark-lint
remark-lint is also available for duo, and as an AMD, CommonJS, and globals module, uncompressed and compressed.
Command line
Use remark-lint together with remark:
npm install --global remark remark-lint
Let’s say example.md
looks as follows:
* Hello
- World
Then, to run remark-lint on example.md
:
remark -u remark-lint example.md
#
# Yields:
#
# example.md
# 1:3 warning Incorrect list-item content indent: add 2 spaces list-item-indent
# 3:1 warning Invalid ordered list item marker: should be `*` unordered-list-marker-style
#
# ✖ 2 problems (0 errors, 2 warnings)
#
# * Hello
#
#
# * World
#
See doc/rules.md for what those warnings are (and how to turn them off).
Programmatic
doc/api.md describes how to use remark-lint’s programatic interface in JavaScript.
Rules
doc/rules.md describes all available rules, what they check for, examples of markdown they warn for, and how to fix their warnings.
Configuring remark-lint
remark-lint is just a remark plug-in. Meaning, you can opt to
configure using configuration files. Read more about these files
(.remarkrc
or package.json
) in remark’s docs.
An example .remarkrc
file could look as follows:
{
"plugins": {
"lint": {
"no-multiple-toplevel-headings": false,
"maximum-line-length": 79,
"emphasis-marker": "_",
"strong-marker": "*"
}
},
"settings": {
"commonmark": true
}
}
Where the object at plugins.lint
is a map of ruleId
s and their values.
The object at settings
determines how remark parses (and compiles)
markdown code. Read more about the latter on remark’s readme.
In addition, you can also provide configuration comments to turn a rule
on or off inside a file (note that you cannot change what a setting, such as
maximum-line-length
, you’re either enabling or disabling warnings).
The following file will warn twice for the duplicate headings:
# Hello
## Hello
### Hello
The following file will warn once (the second heading is ignored, but the third is re-enabled):
# Hello
<!--lint disable no-duplicate-headings-->
## Hello
<!--lint enable no-duplicate-headings-->
### Hello
Using remark to fix your markdown
One of remark’s cool parts is that it compiles to very clean, and highly cross-vendor supported markdown. It’ll ensure list items use a single bullet, emphasis and strong use a standard marker, and that your table fences are aligned.
remark should be able to fix most of your styling issues automatically, and I strongly suggest checking out how it can make your life easier 👍
Editor Integrations
Currently, remark-lint is integrated with Atom through linter-markdown.
I’m very interested in more integrations. Let me know if I can help.
List of External Rules
-
chcokr/mdast-lint-sentence-newline
— Ensure sentences are followed by a newline; -
vhf/remark-lint-alphabetize-lists
— Ensure list items are in alphabetical order; -
vhf/remark-lint-blank-lines-1-0-2
— Ensure a specific number of lines between blocks; -
vhf/remark-lint-books-links
— Ensure links in lists of books follow a standard format; -
vhf/remark-lint-no-empty-sections
— Ensure every heading is followed by content (forming a section); -
vhf/remark-lint-no-url-trailing-slash
— Ensure that thehref
of links has no trailing slash.
Related
wooorm/remark-validate-links
— Validate if links point to existing headings and files in markdown.