mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-12-17 06:20:12 +01:00
Update README.md with rules and examples.
This commit is contained in:
parent
f252f4f498
commit
3217272971
3 changed files with 120 additions and 16 deletions
132
README.md
132
README.md
|
|
@ -1,6 +1,6 @@
|
||||||
# markdownlint
|
# markdownlint
|
||||||
|
|
||||||
> A Node.js style checker/lint tool for Markdown files.
|
> A Node.js style checker and lint tool for Markdown files.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
|
|
@ -11,32 +11,134 @@ npm install markdownlint --save-dev
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
The [Markdown](http://en.wikipedia.org/wiki/Markdown) markup language is
|
The [Markdown](http://en.wikipedia.org/wiki/Markdown) markup language is
|
||||||
designed to be easy to read, write, and work with. The language has succeeded,
|
designed to be easy to read, write, and understand. It succeeds - and its
|
||||||
but its flexibility is both a benefit and a drawback. Many stylistic decisions
|
flexibility is both a benefit and a drawback. Many styles are possible, so
|
||||||
are left to the author, so formatting can be inconsistent. Some constructs
|
formatting can be inconsistent. Some constructs don't work well in all
|
||||||
don't work well in all parsers and should be avoided.
|
parsers and should be avoided.
|
||||||
|
|
||||||
`markdownlint` is a [static analysis](http://en.wikipedia.org/wiki/Static_program_analysis)
|
`markdownlint` is a [static analysis](http://en.wikipedia.org/wiki/Static_program_analysis)
|
||||||
tool for [Node.js](https://nodejs.org/) and [io.js](https://iojs.org/) with a
|
tool for [Node.js](https://nodejs.org/) and [io.js](https://iojs.org/) with a
|
||||||
library of rules to enforce standards and correctness for Markdown files. It
|
library of rules to enforce standards and consistency for Markdown files. It
|
||||||
was inspired by - and heavily influenced by - Mark Harrison's [markdownlint
|
was inspired by - and heavily influenced by - Mark Harrison's
|
||||||
for Ruby](https://github.com/mivok/markdownlint): the rules, rule
|
[markdownlint](https://github.com/mivok/markdownlint) for
|
||||||
documentation, and tests for `markdownlint` come directly from that project.
|
[Ruby](https://www.ruby-lang.org/). The rules, rule documentation, and test
|
||||||
|
cases come directly from that project.
|
||||||
|
|
||||||
> Aside: If you need a Ruby implementation or CLI, please consider
|
> If you need a Ruby implementation or a [CLI](http://en.wikipedia.org/wiki/Command-line_interface),
|
||||||
> [mdl](https://rubygems.org/gems/mdl). If you work with both platforms, most
|
> please consider the [mdl](https://rubygems.org/gems/mdl) gem.
|
||||||
> of what you know can be applied directly.
|
|
||||||
|
|
||||||
## Rules
|
## Rules
|
||||||
|
|
||||||
See [Rules.md](doc/Rules.md)
|
* MD001 - Header levels should only increment by one level at a time
|
||||||
|
* MD002 - First header should be a h1 header
|
||||||
|
* MD003 - Header style
|
||||||
|
* MD004 - Unordered list style
|
||||||
|
* MD005 - Inconsistent indentation for list items at the same level
|
||||||
|
* MD006 - Consider starting bulleted lists at the beginning of the line
|
||||||
|
* MD007 - Unordered list indentation
|
||||||
|
* MD009 - Trailing spaces
|
||||||
|
* MD010 - Hard tabs
|
||||||
|
* MD011 - Reversed link syntax
|
||||||
|
* MD012 - Multiple consecutive blank lines
|
||||||
|
* MD013 - Line length
|
||||||
|
* MD014 - Dollar signs used before commands without showing output
|
||||||
|
* MD018 - No space after hash on atx style header
|
||||||
|
* MD019 - Multiple spaces after hash on atx style header
|
||||||
|
* MD020 - No space inside hashes on closed atx style header
|
||||||
|
* MD021 - Multiple spaces inside hashes on closed atx style header
|
||||||
|
* MD022 - Headers should be surrounded by blank lines
|
||||||
|
* MD023 - Headers must start at the beginning of the line
|
||||||
|
* MD024 - Multiple headers with the same content
|
||||||
|
* MD025 - Multiple top level headers in the same document
|
||||||
|
* MD026 - Trailing punctuation in header
|
||||||
|
* MD027 - Multiple spaces after blockquote symbol
|
||||||
|
* MD028 - Blank line inside blockquote
|
||||||
|
* MD029 - Ordered list item prefix
|
||||||
|
* MD030 - Spaces after list markers
|
||||||
|
* MD031 - Fenced code blocks should be surrounded by blank lines
|
||||||
|
* MD032 - Lists should be surrounded by blank lines
|
||||||
|
|
||||||
|
See [Rules.md](doc/Rules.md) for more details.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
...
|
Invoke `markdownlint` and use the `result` object's `toString` method:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
...
|
var markdownlint = require("../lib/markdownlint");
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
"files": [ "good.md", "bad.md" ]
|
||||||
|
};
|
||||||
|
|
||||||
|
markdownlint(options, function callback(err, result) {
|
||||||
|
if (!err) {
|
||||||
|
console.log(result.toString());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
|
||||||
|
```text
|
||||||
|
bad.md: 3: MD010 Hard tabs
|
||||||
|
bad.md: 1: MD018 No space after hash on atx style header
|
||||||
|
bad.md: 3: MD018 No space after hash on atx style header
|
||||||
|
```
|
||||||
|
|
||||||
|
Or examine the `result` object directly:
|
||||||
|
|
||||||
|
```js
|
||||||
|
markdownlint(options, function callback(err, result) {
|
||||||
|
if (!err) {
|
||||||
|
console.dir(result, { "colors": true });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
'good.md': {},
|
||||||
|
'bad.md': {
|
||||||
|
MD010: [ 3 ],
|
||||||
|
MD018: [ 1, 3 ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Integration with the [gulp](http://gulpjs.com/) build system is straightforward:
|
||||||
|
|
||||||
|
```js
|
||||||
|
var gulp = require("gulp");
|
||||||
|
var through2 = require("through2");
|
||||||
|
var markdownlint = require("../lib/markdownlint");
|
||||||
|
|
||||||
|
gulp.task("markdownlint", function task() {
|
||||||
|
return gulp.src("*.md", { "read": false })
|
||||||
|
.pipe(through2.obj(function obj(file, enc, next) {
|
||||||
|
markdownlint(
|
||||||
|
{ "files": [ file.relative ] },
|
||||||
|
function callback(err, result) {
|
||||||
|
var resultString = (result || "").toString();
|
||||||
|
if (resultString) {
|
||||||
|
console.log(resultString);
|
||||||
|
}
|
||||||
|
next(err, file);
|
||||||
|
});
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
|
||||||
|
```text
|
||||||
|
[00:00:00] Starting 'markdownlint'...
|
||||||
|
bad.md: 3: MD010 Hard tabs
|
||||||
|
bad.md: 1: MD018 No space after hash on atx style header
|
||||||
|
bad.md: 3: MD018 No space after hash on atx style header
|
||||||
|
[00:00:00] Finished 'markdownlint' after 10 ms
|
||||||
```
|
```
|
||||||
|
|
||||||
## Release History
|
## Release History
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@ var shared = require("./shared");
|
||||||
var ruleToDescription = {};
|
var ruleToDescription = {};
|
||||||
rules.forEach(function forRule(rule) {
|
rules.forEach(function forRule(rule) {
|
||||||
ruleToDescription[rule.name] = rule.desc;
|
ruleToDescription[rule.name] = rule.desc;
|
||||||
|
// The following is useful for updating README.md
|
||||||
|
// console.log("* " + rule.name + " - " + rule.desc);
|
||||||
});
|
});
|
||||||
|
|
||||||
function Results() { }
|
function Results() { }
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "markdownlint",
|
"name": "markdownlint",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"description": "A linting tool for Markdown files",
|
"description": "A Node.js style checker and lint tool for Markdown files.",
|
||||||
"main": "lib/markdownlint.js",
|
"main": "lib/markdownlint.js",
|
||||||
"author": "David Anson (http://dlaa.me/)",
|
"author": "David Anson (http://dlaa.me/)",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue