Add improved docs

Closes GH-276.
This commit is contained in:
Titus 2021-12-03 10:06:36 +01:00 committed by GitHub
parent 96e8c4f543
commit 014fca79e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
153 changed files with 12868 additions and 6264 deletions

View File

@ -11,7 +11,7 @@ import listOfRules from './script/plugin/list-of-rules.js'
const plugins = [
remarkPresetLintRecommended,
remarkPresetLintConsistent,
[remarkToc, {tight: true, maxDepth: 2, heading: 'contents'}],
[remarkToc, {tight: true, maxDepth: 3, heading: 'contents'}],
remarkCommentConfig,
[remarkGfm, {tablePipeAlign: false}],
remarkGithub,

View File

@ -1,7 +1,9 @@
# [markdownlint](https://github.com/mivok/markdownlint)
# [markdownlint](https://github.com/markdownlint/markdownlint)
> ⚠️ **Important**: this comparison hasnt been updated in years.
This table documents the similarity and difference between
[**markdownlint**](https://github.com/mivok/markdownlint/blob/HEAD/docs/RULES.md)
[**markdownlint**](https://github.com/markdownlint/markdownlint/blob/master/docs/RULES.md)
rules and **remark-lint**s rules.
| markdownlint | remark | note |

View File

@ -1,6 +1,7 @@
# Create a custom `remark-lint` rule
This guide is part of [a step-by-step tutorial](https://dev.to/floroz/how-to-create-a-custom-lint-rule-for-markdown-and-mdx-using-remark-and-eslint-2jim), and will help you getting started to create your first linting plugin for `remark`.
This guide is part of [a step-by-step tutorial][tutorial], and will help you
getting started to create your first linting plugin for `remark`.
## Contents
@ -31,8 +32,10 @@ Now we can start installing our dependencies:
npm install remark-lint remark-cli
```
* [`remark-lint`](https://github.com/remarkjs/remark-lint): Core lint plugin
* [`remark-cli`](https://github.com/remarkjs/remark/tree/main/packages/remark-cli): Command-line interface
* [`remark-lint`][remark-lint]
— core lint plugin
* [`remark-cli`][remark-cli]
— command line interface
We will also use some utilities:
@ -42,13 +45,12 @@ npm install unified-lint-rule unist-util-generated unist-util-visit
These will help us creating and managing our custom rules.
[Back to Top](#contents)
## Set up remark
With everything installed, we can now create a `.remarkrc.js` that will contain the plugins well use.
With everything installed, we can now create a `.remarkrc.js` that will contain
the plugins well use.
For more info on configuration, see [Configuring `remark-lint`](https://github.com/remarkjs/remark-lint#configuring-remark-lint).
For more info on configuration, see [Examples in `remark-lint`][examples].
```sh
touch .remarkrc.js
@ -61,7 +63,8 @@ module.exports = {
}
```
Then, in our `package.json`, add the following script to process all the markdown files in our project:
Then, in our `package.json`, add the following script to process all the
markdown files in our project:
```json
"scripts": {
@ -87,7 +90,8 @@ Some funny images of our favorite pets
![a lovely dog](lovely-dog.png)
```
At this point, we have a working `remark` configuration and a markdown file in the project.
At this point, we have a working `remark` configuration and a markdown file in
the project.
If we run `npm run lint` we should expect to see in our terminal:
@ -95,14 +99,15 @@ If we run `npm run lint` we should expect to see in our terminal:
doc.md: no issues found
```
All good, the file has been processed, and because we havent specified any plugins nor lint rules, no issues are found.
[Back to Top](#contents)
All good, the file has been processed, and because we havent specified any
plugins nor lint rules, no issues are found.
## The `no-invalid-gif` rule
Lets imagine we want to write a rule that checks whether a `.gif` file is used as an image.
Given the content of our `doc.md` file declared above, we would expect an *error* or *warning* pointing to:
Lets imagine we want to write a rule that checks whether a `.gif` file is used
as an image.
Given the content of our `doc.md` file declared above, we would expect an
*error* or *warning* pointing to:
```markdown
![a funny cat](funny-cat.gif)
@ -110,11 +115,10 @@ Given the content of our `doc.md` file declared above, we would expect an *error
Because the file extension `.gif` in the image violates our rule.
[Back to Top](#contents)
## Create the custom rule
Lets create a new folder `rules` under the root directory, where we will place all of our custom rules, and create a new file in it named `no-gif-allowed.js`.
Lets create a new folder `rules` under the root directory, where we will place
all of our custom rules, and create a new file in it named `no-gif-allowed.js`.
```sh
mkdir rules
@ -123,11 +127,14 @@ touch no-gif-allowed.js
cd .. # return to project root
```
*Note*: the name of folders and files, and where to place them within your project, is up to you.
*Note*: the name of folders and files, and where to place them within your
project, is up to you.
In `./rules/no-gif-allowed.js`, lets import `unified-lint-rule`.
We then export the result of calling `rule` by providing the *namespace and rule name* (`remark-lint:no-gif-allowed`) as the first argument, and our implementation of the rule (`noGifAllowed`) as the second argument.
We then export the result of calling `rule` by providing the *namespace and rule
name* (`remark-lint:no-gif-allowed`) as the first argument, and our
implementation of the rule (`noGifAllowed`) as the second argument.
```js
// rules/no-gif-allowed.js
@ -143,7 +150,8 @@ const remarkLintNoGifAllowed = lintRule(
export default remarkLintNoGifAllowed
```
Lets say you want all your custom rules to be defined as part of your project namespace.
Lets say you want all your custom rules to be defined as part of your project
namespace.
If your project was named `my-project`, then you can export your rule as:
```js
@ -152,9 +160,8 @@ const remarkLintNoGifAllowed = lintRule('my-project-name:no-gif-allowed', () =>
const remarkLintNoGifAllowed = lintRule('my-npm-published-package:no-gif-allowed', () => {})
```
This can help you when wanting to create a group of rules under the same *namespace*.
[Back to Top](#contents)
This can help you when wanting to create a group of rules under the same
*namespace*.
## Rule arguments
@ -164,17 +171,20 @@ Your rule function will receive three arguments:
(tree, file, options) => {}
```
* `tree` (*required*): [mdast](https://github.com/syntax-tree/mdast)
* `file` (*required*): [virtual file](https://github.com/vfile/vfile)
* `options` (*optional*): additional information passed to the rule by users
[Back to Top](#contents)
* `tree` (*required*): [mdast][]
* `file` (*required*): [virtual file][vfile]
* `options` (*optional*): additional info passed to the rule by users
## Rule implementation
Because we will be inspecting [mdast](https://github.com/syntax-tree/mdast), which is a markdown abstract syntax tree built upon [unist](https://github.com/syntax-tree/unist), we can take advantage of the many existing [unist utilities](https://github.com/syntax-tree/unist#utilities) to inspect our trees nodes.
Because we will be inspecting [mdast][], which is a markdown abstract syntax
tree built upon [unist][], we can take advantage of the many existing
[unist utilities][unist-util] to inspect our trees nodes.
For this example, we will use [`unist-util-visit`](https://github.com/syntax-tree/unist-util-visit) to recursively inspect all the image nodes, and [`unist-util-generated`](https://github.com/syntax-tree/unist-util-generated) to ensure we are not inspecting nodes that we have generated ourselves and do not belong to the `doc.md`.
For this example, we will use [`unist-util-visit`][unist-util-visit] to
recursively inspect all the image nodes, and
[`unist-util-generated`][unist-util-generated] to ensure we are not inspecting
nodes that we have generated ourselves and do not belong to the `doc.md`.
```js
import {lintRule} from 'unified-lint-rule'
@ -205,7 +215,7 @@ const remarkLintNoGifAllowed = lintRule(
// Remember to provide the node as second argument to the message,
// in order to obtain the position and column where the violation occurred.
file.message(
'Invalid image file extentions. Please do not use gifs',
'Invalid image file extensions. Please do not use gifs',
node
)
}
@ -217,11 +227,10 @@ const remarkLintNoGifAllowed = lintRule(
export default remarkLintNoGifAllowed
```
[Back to Top](#contents)
## Import the rule in your remark config
Now that our custom rule is defined and ready to be used we need to add it to our `remark` configuration.
Now that our custom rule is defined and ready to be used we need to add it to
our `remark` configuration.
You can do that by importing your rule and adding it in `plugins` array:
@ -238,16 +247,33 @@ const preset = {plugins}
export default preset
```
[Back to Top](#contents)
## Apply the rule on the Markdown file
If you run `npm run lint`, you should see the following message in the terminal:
```text
5:1-5:30 warning Invalid image file extentions. Please do not use gifs no-gif-allowed remark-lint
5:1-5:30 warning Invalid image file extensions. Please do not use gifs no-gif-allowed remark-lint
```
**Congratulations! The rule works!**
**Congratulations!
The rule works!**
[Back to Top](#contents)
[tutorial]: https://dev.to/floroz/how-to-create-a-custom-lint-rule-for-markdown-and-mdx-using-remark-and-eslint-2jim
[remark-lint]: https://github.com/remarkjs/remark-lint
[remark-cli]: https://github.com/remarkjs/remark/tree/main/packages/remark-cli
[examples]: https://github.com/remarkjs/remark-lint#examples
[mdast]: https://github.com/syntax-tree/mdast
[vfile]: https://github.com/vfile/vfile
[unist]: https://github.com/syntax-tree/unist
[unist-util]: https://github.com/syntax-tree/unist#utilities
[unist-util-visit]: https://github.com/syntax-tree/unist-util-visit
[unist-util-generated]: https://github.com/syntax-tree/unist-util-generated

View File

@ -1,155 +1,13 @@
# Rules
This document describes how to configure rules and lists all available official
rules. Each rule is a separate package. See their readmes for more
information.
## Contents
* [Configuration](#configuration)
* [List of rules](#list-of-rules)
## Configuration
`false` turns rules off — the code no longer runs:
```js
import remarkLintFinalNewline from 'remark-lint-final-newline'
remark()
.use(remarkLintFinalNewline, false)
// …
```
`true` turns a rule on again:
```js
import remarkLintFinalNewline from 'remark-lint-final-newline'
remark()
.use(remarkLintFinalNewline, true)
// …
```
Rules can be configured with a severity too. The following ignores all
messages from the plugin:
```js
import remarkLintFinalNewline from 'remark-lint-final-newline'
remark()
.use(remarkLintFinalNewline, [0])
// …
```
…and passing `[1]` explicitly sets the normal behavior (warn for problems).
To trigger an error instead of a warning, pass `2`:
```js
import remarkLintFinalNewline from 'remark-lint-final-newline'
remark()
.use(remarkLintFinalNewline, [2])
// …
```
Its also possible to pass both a severity and configuration:
```js
import remarkLintMaximumLineLength from 'remark-lint-maximum-line-length'
remark()
.use(remarkLintMaximumLineLength, [2, 70])
// …
```
Lastly, strings can also be passed, instead of numbers:
`off` instead of `0`, `warn` or `on` instead of `1`, and
`error` instead of `2`.
```js
import remarkLintMaximumLineLength from 'remark-lint-maximum-line-length'
remark()
.use(remarkLintMaximumLineLength, ['error', 70])
// …
```
See the monorepo readme for [configuring rules][config].
## List of rules
This lists contains all “official” rules, developed in this repository.
For rules developed outside of this repo, view the [List of External
Rules][external].
See the monorepo readme for the [rules][].
<!--rules start-->
[config]: https://github.com/remarkjs/remark-lint#configure
* [`blockquote-indentation`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-blockquote-indentation) — warn when block quotes are either indented too much or too little
* [`checkbox-character-style`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-checkbox-character-style) — warn when list item checkboxes violate a given style
* [`checkbox-content-indent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-checkbox-content-indent) — warn when list item checkboxes are followed by too much whitespace
* [`code-block-style`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-code-block-style) — warn when code blocks do not adhere to a given style
* [`definition-case`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-definition-case) — warn when definition labels are not lowercase
* [`definition-spacing`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-definition-spacing) — warn when consecutive whitespace is used in a definition
* [`emphasis-marker`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-emphasis-marker) — warn when emphasis markers violate the given style
* [`fenced-code-flag`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-fenced-code-flag) — warn when fenced code blocks occur without language flag
* [`fenced-code-marker`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-fenced-code-marker) — warn when fenced code markers violate the given style
* [`file-extension`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-file-extension) — warn when the files extension violates the given style
* [`final-definition`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-final-definition) — warn when definitions are not placed at the end of the file
* [`final-newline`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-final-newline) — warn when a newline at the end of a file is missing
* [`first-heading-level`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-first-heading-level) — warn when the first heading has a level other than a specified value
* [`hard-break-spaces`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-hard-break-spaces) — warn when too many spaces are used to create a hard break
* [`heading-increment`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-heading-increment) — warn when headings increment with more than 1 level at a time
* [`heading-style`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-heading-style) — warn when heading style violates the given style
* [`linebreak-style`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-linebreak-style) — warn when linebreaks violate a given or detected style
* [`link-title-style`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-link-title-style) — warn when link and definition titles occur with incorrect quotes
* [`list-item-bullet-indent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-list-item-bullet-indent) — warn when list item bullets are indented
* [`list-item-content-indent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-list-item-content-indent) — warn when the content of a list item has mixed indentation
* [`list-item-indent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-list-item-indent) — warn when the spacing between a list items bullet and its content violates a given style
* [`list-item-spacing`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-list-item-spacing) — warn when list looseness is incorrect
* [`maximum-heading-length`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-maximum-heading-length) — warn when headings are too long
* [`maximum-line-length`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-maximum-line-length) — warn when lines are too long
* [`no-blockquote-without-marker`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-blockquote-without-marker) — warn when blank lines without markers (\`>\`) are found in a block quote
* [`no-consecutive-blank-lines`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-consecutive-blank-lines) — warn for too many consecutive blank lines
* [`no-duplicate-defined-urls`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-duplicate-defined-urls) — warn on definitions that define the same urls
* [`no-duplicate-definitions`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-duplicate-definitions) — warn on duplicate definitions
* [`no-duplicate-headings`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-duplicate-headings) — warn on duplicate headings
* [`no-duplicate-headings-in-section`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-duplicate-headings-in-section) — warn on duplicate headings in a section
* [`no-emphasis-as-heading`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-emphasis-as-heading) — warn when emphasis or importance is used instead of a heading
* [`no-empty-url`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-empty-url) — warn on empty URLs in links and images
* [`no-file-name-articles`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-file-name-articles) — warn when file name start with an article
* [`no-file-name-consecutive-dashes`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-file-name-consecutive-dashes) — warn when file names contain consecutive dashes
* [`no-file-name-irregular-characters`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-file-name-irregular-characters) — warn when file names contain irregular characters
* [`no-file-name-mixed-case`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-file-name-mixed-case) — warn when file names use mixed case
* [`no-file-name-outer-dashes`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-file-name-outer-dashes) — warn when file names contain initial or final dashes
* [`no-heading-content-indent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-heading-content-indent) — warn when heading content is indented
* [`no-heading-indent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-heading-indent) — warn when headings are indented
* [`no-heading-like-paragraph`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-heading-like-paragraph) — for too many hashes (h7+ “headings”)
* [`no-heading-punctuation`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-heading-punctuation) — warn when headings end in illegal characters
* [`no-html`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-html) — warn when HTML nodes are used
* [`no-inline-padding`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-inline-padding) — warn when inline nodes are padded with spaces
* [`no-literal-urls`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-literal-urls) — warn when URLs without angle brackets are used
* [`no-missing-blank-lines`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-missing-blank-lines) — warn when missing blank lines
* [`no-multiple-toplevel-headings`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-multiple-toplevel-headings) — warn when multiple top level headings are used
* [`no-paragraph-content-indent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-paragraph-content-indent) — warn when the content in paragraphs are indented
* [`no-reference-like-url`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-reference-like-url) — warn when URLs are also defined identifiers
* [`no-shell-dollars`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-shell-dollars) — warn when shell code is prefixed by dollars
* [`no-shortcut-reference-image`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-shortcut-reference-image) — warn when shortcut reference images are used
* [`no-shortcut-reference-link`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-shortcut-reference-link) — warn when shortcut reference links are used
* [`no-table-indentation`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-table-indentation) — warn when tables are indented
* [`no-tabs`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-tabs) — warn when hard tabs are used instead of spaces
* [`no-undefined-references`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-undefined-references) — warn when references to undefined definitions are found
* [`no-unneeded-full-reference-image`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-unneeded-full-reference-image) — warn when full reference images are used if they can be collapsed
* [`no-unneeded-full-reference-link`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-unneeded-full-reference-link) — warn when full reference links are used if they can be collapsed
* [`no-unused-definitions`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-unused-definitions) — warn when unused definitions are found
* [`ordered-list-marker-style`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-ordered-list-marker-style) — warn when the markers of ordered lists violate a given style
* [`ordered-list-marker-value`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-ordered-list-marker-value) — warn when the marker value of ordered lists violates a given style
* [`rule-style`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-rule-style) — warn when horizontal rules violate a given style
* [`strikethrough-marker`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-strikethrough-marker) — warn when strikethrough markers violate the given style
* [`strong-marker`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-strong-marker) — warn when importance (strong) markers violate the given style
* [`table-cell-padding`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-table-cell-padding) — warn when table cells are incorrectly padded
* [`table-pipe-alignment`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-table-pipe-alignment) — warn when table pipes are not aligned
* [`table-pipes`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-table-pipes) — warn when table rows are not fenced with pipes
* [`unordered-list-marker-style`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-unordered-list-marker-style) — warn when markers of unordered lists violate a given style
<!--rules end-->
[external]: https://github.com/remarkjs/remark-lint#list-of-external-rules
[rules]: https://github.com/remarkjs/remark-lint#rules

View File

@ -1,5 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="400" viewBox="0 0 410 210">
<path fill="#d80303" d="M6.57 126L14.01 126L14.01 98.03C14.01 91.93 16.50 86.94 24.49 86.94C25.87 86.94 27.33 86.98 28.10 87.11L28.10 80.37C27.20 80.24 26.25 80.15 25.31 80.15C18.91 80.15 15.51 83.68 14.18 86.38L13.96 86.38L13.96 80.84L6.57 80.84ZM53.50 126.73C63.46 126.73 69.44 121.19 71.16 113.71L63.81 113.71C62.35 117.92 58.91 120.54 53.67 120.54C46.32 120.54 41.94 114.66 41.94 106.06L41.94 105.25L71.76 105.25L71.76 101.04C71.76 88.62 64.97 80.11 53.15 80.11C41.29 80.11 34.55 88.62 34.55 100.52L34.55 105.59C34.55 118.44 41.72 126.73 53.50 126.73ZM41.94 99.27L41.94 99.14C41.94 92.01 46.32 86.30 53.20 86.30C59.94 86.30 64.37 91.97 64.37 99.14L64.37 99.27Z"/>
<path d="M82.93 126L90.32 126L90.32 97.38C90.32 90.55 94.66 86.77 100.20 86.77C106.35 86.77 110.04 90.55 110.04 97.47L110.04 126L117.39 126L117.39 97.47C117.39 91.20 120.96 86.77 127.36 86.77C133.80 86.77 137.11 91.02 137.11 96.78L137.11 126L144.46 126L144.46 95.28C144.46 86.00 138.83 80.11 129.29 80.11C121.95 80.11 117.18 83.50 115.46 87.37L115.11 87.37C113.35 82.95 109.14 80.11 102.09 80.11C96.12 80.11 92.13 83.29 90.66 86.38L90.28 86.38L90.28 80.84L82.93 80.84ZM182.66 120.37L182.88 120.37L182.88 126L189.96 126L189.96 94.85C189.96 85.35 182.96 80.11 173.34 80.11C162.42 80.11 157.05 85.87 156.58 93.77L163.54 93.77C163.97 89.26 167.28 86.30 173.08 86.30C179.18 86.30 182.62 89.56 182.62 95.49L182.62 100.09L170.71 100.09C160.36 100.13 154.86 105.12 154.86 113.02C154.86 121.32 160.88 126.73 169.60 126.73C176.26 126.73 180.38 124.02 182.66 120.37ZM171.57 120.59C166.85 120.59 162.42 118.09 162.42 112.77C162.42 108.68 165.09 105.76 171.27 105.76L182.62 105.76L182.62 111.00C182.62 116.63 177.89 120.59 171.57 120.59ZM202.73 126L210.16 126L210.16 98.03C210.16 91.93 212.65 86.94 220.64 86.94C222.02 86.94 223.48 86.98 224.25 87.11L224.25 80.37C223.35 80.24 222.41 80.15 221.46 80.15C215.06 80.15 211.66 83.68 210.33 86.38L210.12 86.38L210.12 80.84L202.73 80.84ZM240.02 109.71L244.19 105.16L259.53 126L268.60 126L249.65 100.48L267.48 80.84L258.33 80.84L240.32 100.82L240.02 100.82L240.02 64.25L232.63 64.25L232.63 126L240.02 126Z"/>
<path fill="#d80303" d="M274.57 126L281.92 126L281.92 64.25L274.57 64.25ZM295.80 126L303.19 126L303.19 80.84L295.80 80.84ZM294.77 69.97C294.77 72.59 296.87 74.65 299.49 74.65C302.11 74.65 304.26 72.59 304.26 69.97C304.26 67.30 302.11 65.24 299.49 65.24C296.87 65.24 294.77 67.30 294.77 69.97ZM316.81 126L324.20 126L324.20 98.50C324.20 92.31 327.55 86.81 335.33 86.81C341.90 86.81 346.37 90.68 346.37 98.29L346.37 126L353.76 126L353.76 97.04C353.76 86.04 346.84 80.11 337.56 80.11C330.21 80.11 326.05 83.93 324.37 86.81L324.16 86.81L324.16 80.84L316.81 80.84ZM369.06 80.84L362.96 80.84L362.96 87.03L369.02 87.03L369.02 113.37C369.02 122.26 371.21 126.39 381.91 126.39C383.45 126.39 385 126.21 385.64 126.09L385.64 120.16C385.04 120.24 384.48 120.24 383.75 120.24C378.21 120.24 376.41 118.87 376.41 113.45L376.41 87.03L385.34 87.03L385.34 80.84L376.41 80.84L376.41 69.58L369.06 69.58Z"/>
<svg xmlns="http://www.w3.org/2000/svg" width="1012" height="300" viewBox="0 0 1012 300">
<style>
.b {fill: #0d1117}
.l {fill: #fff}
@media (prefers-color-scheme: light) {
.b {fill: #fff}
.l {fill: #0d1117}
}
</style>
<rect class="b" x="0" y="0" width="1012" height="300" />
<path fill="#d80303" d="M336.61 173.50L336.61 159.32Q336.61 152.84 339.62 149.00Q342.64 145.17 347.74 145.17L347.74 145.17Q349.03 145.17 350.43 145.40Q351.84 145.63 352.92 146.04L352.92 146.04L352.92 141.86Q352.19 141.53 350.95 141.34Q349.70 141.15 348.32 141.15L348.32 141.15Q343.72 141.15 340.74 143.45Q337.75 145.75 336.93 149.97L336.93 149.97L336.52 149.97L336.52 141.94L325.62 141.94L325.62 145.05L332.77 145.05L332.77 173.50L336.61 173.50ZM326.26 173.50L346.63 173.50L346.63 170.39L326.26 170.39L326.26 173.50ZM375.51 144.81L375.51 144.81Q379.70 144.81 382.06 147.67Q384.42 150.53 384.42 155.57L384.42 155.57L366.37 155.57Q366.37 150.50 368.80 147.66Q371.23 144.81 375.51 144.81ZM388.17 165.70L384.36 165.70Q383.63 168.02 381.40 169.31Q379.17 170.60 375.95 170.60L375.95 170.60Q371.56 170.60 368.96 167.68Q366.37 164.77 366.37 159.81L366.37 159.81L366.37 158.73L388.31 158.73L388.31 156.24Q388.31 151.52 386.81 148.21Q385.30 144.90 382.44 143.16Q379.58 141.42 375.51 141.42L375.51 141.42Q371.62 141.42 368.69 143.13Q365.76 144.84 364.14 147.93Q362.53 151.03 362.53 155.19L362.53 155.19L362.53 159.79Q362.53 166.52 366.06 170.27Q369.59 174.02 375.95 174.02L375.95 174.02Q379.14 174.02 381.71 173.00Q384.27 171.97 385.96 170.10Q387.64 168.22 388.17 165.70L388.17 165.70Z"/>
<path class="l" d="M427.87 173.50L427.87 150.85Q427.87 146.16 426.12 143.79Q424.38 141.42 420.92 141.42L420.92 141.42Q418.49 141.42 416.64 142.71Q414.80 143.99 414.15 146.16L414.15 146.16L413.74 146.16Q413.25 143.91 411.71 142.66Q410.17 141.42 407.91 141.42L407.91 141.42Q405.75 141.42 404.12 142.69Q402.49 143.96 401.88 146.16L401.88 146.16L401.47 146.16L401.47 141.94L397.98 141.94L397.98 173.50L401.59 173.50L401.59 152.37Q401.59 148.89 402.95 146.88Q404.31 144.87 406.68 144.87L406.68 144.87Q408.94 144.87 410.07 146.59Q411.20 148.30 411.20 151.70L411.20 151.70L411.20 173.50L414.80 173.50L414.80 152.37Q414.80 148.86 416.13 146.87Q417.46 144.87 419.78 144.87L419.78 144.87Q422.01 144.87 423.13 146.60Q424.26 148.33 424.26 151.73L424.26 151.73L424.26 173.50L427.87 173.50ZM447.23 174.05L447.23 174.05Q450.80 174.05 453.34 172.63Q455.87 171.21 456.99 168.54L456.99 168.54L457.40 168.54L457.40 173.53L461.09 173.53L461.09 151.85Q461.09 147.04 458.11 144.36Q455.14 141.68 449.78 141.68L449.78 141.68Q446.73 141.68 444.26 142.72Q441.78 143.76 440.21 145.58Q438.65 147.39 438.35 149.77L438.35 149.77L442.16 149.77Q442.84 147.48 444.81 146.25Q446.79 145.02 449.78 145.02L449.78 145.02Q453.41 145.02 455.32 146.82Q457.22 148.62 457.22 152.02L457.22 152.02L457.22 155.01L448.08 155.42Q442.87 155.65 440.01 158.04Q437.15 160.43 437.15 164.59L437.15 164.59Q437.15 168.87 439.92 171.46Q442.69 174.05 447.23 174.05ZM448.17 170.65L448.17 170.65Q444.89 170.65 443.00 169.03Q441.11 167.40 441.11 164.59L441.11 164.59Q441.11 158.91 448.34 158.58L448.34 158.58L457.22 158.20L457.22 162.60Q457.22 164.85 456.02 166.68Q454.82 168.52 452.77 169.58Q450.72 170.65 448.17 170.65ZM485.61 173.50L485.61 159.32Q485.61 152.84 488.63 149.00Q491.64 145.17 496.74 145.17L496.74 145.17Q498.03 145.17 499.44 145.40Q500.84 145.63 501.93 146.04L501.93 146.04L501.93 141.86Q501.20 141.53 499.95 141.34Q498.71 141.15 497.33 141.15L497.33 141.15Q492.73 141.15 489.74 143.45Q486.75 145.75 485.93 149.97L485.93 149.97L485.52 149.97L485.52 141.94L474.62 141.94L474.62 145.05L481.77 145.05L481.77 173.50L485.61 173.50ZM475.27 173.50L495.63 173.50L495.63 170.39L475.27 170.39L475.27 173.50ZM533.30 141.94L518.48 156.80L518.13 156.80L518.13 129.38L514.29 129.38L514.29 173.50L518.13 173.50L518.13 161.54L523.72 156.09L524.66 155.19L538.17 141.94L533.30 141.94ZM525.19 153.43L522.41 155.92L534.42 173.50L539.05 173.50L525.19 153.43Z"/>
<path fill="#d80303" d="M551 173.50L576.75 173.50L576.75 170.39L565.94 170.39L565.94 129.38L550.94 129.38L550.94 132.48L562.10 132.48L562.10 170.39L551 170.39L551 173.50ZM600.69 133.59L600.69 133.59Q602.18 133.59 603.25 132.52Q604.32 131.46 604.32 129.96L604.32 129.96Q604.32 128.47 603.25 127.40Q602.18 126.33 600.69 126.33L600.69 126.33Q599.19 126.33 598.12 127.40Q597.05 128.47 597.05 129.96L597.05 129.96Q597.05 131.46 598.12 132.52Q599.19 133.59 600.69 133.59ZM588.09 173.50L613.84 173.50L613.84 170.39L603.03 170.39L603.03 141.94L588.03 141.94L588.03 145.05L599.19 145.05L599.19 170.39L588.09 170.39L588.09 173.50ZM624.71 141.94L624.71 173.50L628.55 173.50L628.55 154.75Q628.55 150.35 631.17 147.61Q633.79 144.87 638.04 144.87L638.04 144.87Q642.03 144.87 643.93 147.10Q645.83 149.33 645.83 153.96L645.83 153.96L645.83 173.50L649.67 173.50L649.67 152.99Q649.67 147.36 646.95 144.39Q644.22 141.42 639.07 141.42L639.07 141.42Q635.40 141.42 632.72 143.03Q630.04 144.64 628.75 147.63L628.75 147.63L628.37 147.63L628.37 141.94L624.71 141.94ZM673.17 133.74L669.33 133.74L669.33 141.94L660.83 141.94L660.83 145.20L669.33 145.20L669.33 164.38Q669.33 167.49 670.59 169.56Q671.85 171.62 674.37 172.65Q676.89 173.67 680.67 173.67L680.67 173.67Q682.04 173.67 683.86 173.55Q685.68 173.44 686.38 173.32L686.38 173.32L686.38 170.04Q685.62 170.16 684.07 170.21Q682.51 170.27 680.87 170.27L680.87 170.27Q677.12 170.27 675.15 168.74Q673.17 167.20 673.17 164.27L673.17 164.27L673.17 145.20L686.38 145.20L686.38 141.94L673.17 141.94L673.17 133.74Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -1,16 +1,46 @@
/**
* ## When should I use this?
*
* You can use this package to check that the indent of block quotes is
* consistent.
* Indent here is the `>` (greater than) marker and the spaces before content.
*
* ## API
*
* The following options (default: `'consistent'`) are accepted:
*
* * `number` (example: `2`)
* preferred indent of `>` and spaces before content
* * `'consistent'`
* detect the first used style and warn when further block quotes differ
*
* ## Recommendation
*
* CommonMark specifies that when block quotes are used the `>` markers can be
* followed by an optional space.
* No space at all arguably looks rather ugly:
*
* ```markdown
* >Mars and
* >Venus.
* ```
*
* There is no specific handling of more that one space, so if 5 spaces were
* used after `>`, then indented code kicks in:
*
* ```markdown
* > neptune()
* ```
*
* Due to this, its recommended to configure this rule with `2`.
*
* @module blockquote-indentation
* @summary
* remark-lint rule to warn when block quotes are indented too much or
* too little.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module blockquote-indentation
* @fileoverview
* Warn when block quotes are indented too much or too little.
*
* Options: `number` or `'consistent'`, default: `'consistent'`.
*
* `'consistent'` detects the first used indentation and will warn when
* other block quotes use a different indentation.
*
* @example
* {"name": "ok.md", "setting": 4}
*

View File

@ -10,12 +10,35 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when block quotes are indented too much or too little.
[`remark-lint`][mono] rule to warn when block quotes are indented too much or
too little.
Options: `number` or `'consistent'`, default: `'consistent'`.
## Contents
`'consistent'` detects the first used indentation and will warn when
other block quotes use a different indentation.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintBlockquoteIndentation[, config])`](#unifieduseremarklintblockquoteindentation-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that the “indent” of block quotes is
consistent.
Indent here is the `>` (greater than) marker and the spaces before content.
## Presets
@ -26,7 +49,111 @@ This rule is included in the following presets:
| [`remark-preset-lint-consistent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-consistent) | `'consistent'` |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | `2` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-blockquote-indentation
```
In Deno with [Skypack][]:
```js
import remarkLintBlockquoteIndentation from 'https://cdn.skypack.dev/remark-lint-blockquote-indentation@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintBlockquoteIndentation from 'https://cdn.skypack.dev/remark-lint-blockquote-indentation@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintBlockquoteIndentation from 'remark-lint-blockquote-indentation'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintBlockquoteIndentation)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-blockquote-indentation example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-blockquote-indentation",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintBlockquoteIndentation`.
### `unified().use(remarkLintBlockquoteIndentation[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'consistent'`) are accepted:
* `number` (example: `2`)
— preferred indent of `>` and spaces before content
* `'consistent'`
— detect the first used style and warn when further block quotes differ
## Recommendation
CommonMark specifies that when block quotes are used the `>` markers can be
followed by an optional space.
No space at all arguably looks rather ugly:
```markdown
>Mars and
>Venus.
```
There is no specific handling of more that one space, so if 5 spaces were
used after `>`, then indented code kicks in:
```markdown
> neptune()
```
Due to this, its recommended to configure this rule with `2`.
## Examples
##### `ok.md`
@ -87,59 +214,12 @@ Paragraph.
9:3: Add 1 space between block quote and content
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-blockquote-indentation
```
This package exports no identifiers.
The default export is `remarkLintBlockquoteIndentation`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-blockquote-indentation",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-blockquote-indentation readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintBlockquoteIndentation from 'remark-lint-blockquote-indentation'
remark()
.use(remarkLint)
+ .use(remarkLintBlockquoteIndentation)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -181,17 +261,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,31 +1,41 @@
/**
* ## When should I use this?
*
* You can use this package to check that the style of GFM tasklists is
* consistent.
*
* ## API
*
* The following options (default: `'consistent'`) are accepted:
*
* * `Object` with the following fields:
* * `checked` (`'x'`, `'X'`, or `'consistent'`, default: `'consistent'`)
* preferred character to use for checked checkboxes
* * `unchecked` (`'·'` (a space), `'»'` (a tab), or `'consistent'`,
* default: `'consistent'`)
* preferred character to use for unchecked checkboxes
* * `'consistent'`
* detect the first used styles and warn when further checkboxes differ
*
* ## Recommendation
*
* Its recommended to set `options.checked` to `'x'` (a lowercase X) as it
* prevents an extra keyboard press and `options.unchecked` to `'·'` (a space)
* to make all checkboxes align.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats checked checkboxes using `'x'` (lowercase X) and unchecked checkboxes
* using `'·'` (a space).
*
* @module checkbox-character-style
* @summary
* remark-lint rule to warn when list item checkboxes violate a given
* style.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module checkbox-character-style
* @fileoverview
* Warn when list item checkboxes violate a given style.
*
* Options: `Object` or `'consistent'`, default: `'consistent'`.
*
* `'consistent'` detects the first used checked and unchecked checkbox
* styles and warns when subsequent checkboxes use different styles.
*
* Styles can also be passed in like so:
*
* ```js
* {checked: 'x', unchecked: ' '}
* ```
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* formats checked checkboxes using `x` (lowercase X) and unchecked checkboxes
* as `·` (a single space).
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md", "setting": {"checked": "x"}, "gfm": true}
*

View File

@ -10,27 +10,35 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when list item checkboxes violate a given style.
[`remark-lint`][mono] rule to warn when list item checkboxes violate a given
style.
Options: `Object` or `'consistent'`, default: `'consistent'`.
## Contents
`'consistent'` detects the first used checked and unchecked checkbox
styles and warns when subsequent checkboxes use different styles.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintCheckboxCharacterStyle[, config])`](#unifieduseremarklintcheckboxcharacterstyle-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
Styles can also be passed in like so:
## What is this?
```js
{checked: 'x', unchecked: ' '}
```
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## Fix
## When should I use this?
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
formats checked checkboxes using `x` (lowercase X) and unchecked checkboxes
as `·` (a single space).
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
You can use this package to check that the style of GFM tasklists is
consistent.
## Presets
@ -40,7 +48,107 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-consistent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-consistent) | `'consistent'` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-checkbox-character-style
```
In Deno with [Skypack][]:
```js
import remarkLintCheckboxCharacterStyle from 'https://cdn.skypack.dev/remark-lint-checkbox-character-style@4?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintCheckboxCharacterStyle from 'https://cdn.skypack.dev/remark-lint-checkbox-character-style@4?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintCheckboxCharacterStyle from 'remark-lint-checkbox-character-style'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintCheckboxCharacterStyle)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-checkbox-character-style example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-checkbox-character-style",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintCheckboxCharacterStyle`.
### `unified().use(remarkLintCheckboxCharacterStyle[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'consistent'`) are accepted:
* `Object` with the following fields:
* `checked` (`'x'`, `'X'`, or `'consistent'`, default: `'consistent'`)
— preferred character to use for checked checkboxes
* `unchecked` (`'·'` (a space), `'»'` (a tab), or `'consistent'`,
default: `'consistent'`)
— preferred character to use for unchecked checkboxes
* `'consistent'`
— detect the first used styles and warn when further checkboxes differ
## Recommendation
Its recommended to set `options.checked` to `'x'` (a lowercase X) as it
prevents an extra keyboard press and `options.unchecked` to `'·'` (a space)
to make all checkboxes align.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats checked checkboxes using `'x'` (lowercase X) and unchecked checkboxes
using `'·'` (a space).
## Examples
##### `ok.md`
@ -48,7 +156,7 @@ When configured with `{ checked: 'x' }`.
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
```markdown
- [x] List item
@ -65,7 +173,7 @@ When configured with `{ checked: 'X' }`.
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
```markdown
- [X] List item
@ -82,9 +190,9 @@ When configured with `{ unchecked: ' ' }`.
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
- [ ] List item
@ -103,9 +211,9 @@ When configured with `{ unchecked: '\t' }`.
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
Note: `»` represents a tab.
> 👉 **Note**: `»` represents a tab.
```markdown
- [»] List item
@ -120,9 +228,9 @@ No messages.
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
Note: `»` represents a tab.
> 👉 **Note**: `»` represents a tab.
```markdown
- [x] List item
@ -158,59 +266,12 @@ When configured with `{ checked: '💩' }`.
1:1: Incorrect checked checkbox marker `💩`: use either `'x'`, or `'X'`
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-checkbox-character-style
```
This package exports no identifiers.
The default export is `remarkLintCheckboxCharacterStyle`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-checkbox-character-style",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-checkbox-character-style readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintCheckboxCharacterStyle from 'remark-lint-checkbox-character-style'
remark()
.use(remarkLint)
+ .use(remarkLintCheckboxCharacterStyle)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -252,17 +313,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,42 @@
/**
* ## When should I use this?
*
* You can use this package to check that the indent after a GFM tasklist
* checkbox is a single space.
*
* ## API
*
* There are no accepted options.
*
* ## Recommendation
*
* GFM allows zero or more spaces and tabs after checkboxes.
* No space at all arguably looks rather ugly:
*
* ```markdown
* * [x]Pluto
* ```
*
* More that one space is superfluous:
*
* ```markdown
* * [x] Jupiter
* ```
*
* Due to this, its recommended to turn this rule on.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats checkboxes and the content after them with a single space between.
*
* @module checkbox-content-indent
* @summary
* remark-lint rule to warn when GFM tasklist checkboxes are followed by
* more than one space.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module checkbox-content-indent
* @fileoverview
* Warn when list item checkboxes are followed by too much whitespace.
*
* @example
* {"name": "ok.md", "gfm": true}
*

View File

@ -10,19 +10,148 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when list item checkboxes are followed by too much whitespace.
[`remark-lint`][mono] rule to warn when GFM tasklist checkboxes are followed by
more than one space.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintCheckboxContentIndent[, config])`](#unifieduseremarklintcheckboxcontentindent-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that the “indent” after a GFM tasklist
checkbox is a single space.
## Presets
This rule is not included in any default preset
This rule is not included in a preset maintained here.
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-checkbox-content-indent
```
In Deno with [Skypack][]:
```js
import remarkLintCheckboxContentIndent from 'https://cdn.skypack.dev/remark-lint-checkbox-content-indent@4?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintCheckboxContentIndent from 'https://cdn.skypack.dev/remark-lint-checkbox-content-indent@4?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintCheckboxContentIndent from 'remark-lint-checkbox-content-indent'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintCheckboxContentIndent)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-checkbox-content-indent example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-checkbox-content-indent",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintCheckboxContentIndent`.
### `unified().use(remarkLintCheckboxContentIndent[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no accepted options.
## Recommendation
GFM allows zero or more spaces and tabs after checkboxes.
No space at all arguably looks rather ugly:
```markdown
* [x]Pluto
```
More that one space is superfluous:
```markdown
* [x] Jupiter
```
Due to this, its recommended to turn this rule on.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats checkboxes and the content after them with a single space between.
## Examples
##### `ok.md`
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
```markdown
- [ ] List item
@ -39,7 +168,7 @@ No messages.
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
```markdown
- [ ] List item
@ -56,59 +185,12 @@ Note: this example uses [GFM][].
4:7-4:10: Checkboxes should be followed by a single character
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-checkbox-content-indent
```
This package exports no identifiers.
The default export is `remarkLintCheckboxContentIndent`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-checkbox-content-indent",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-checkbox-content-indent readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintCheckboxContentIndent from 'remark-lint-checkbox-content-indent'
remark()
.use(remarkLint)
+ .use(remarkLintCheckboxContentIndent)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -150,17 +232,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,27 +1,52 @@
/**
* ## When should I use this?
*
* You can use this package to check that code blocks are consistent.
*
* ## API
*
* The following options (default: `'consistent'`) are accepted:
*
* * `'fenced'`
* prefer fenced code blocks:
* ````markdown
* ```js
* code()
* ```
* ````
* * `'indented'`
* prefer indented code blocks:
* ```markdown
* code()
* ```
* * `'consistent'`
* detect the first used style and warn when further code blocks differ
*
* ## Recommendation
*
* Indentation in markdown is complex, especially because lists and indented
* code can interfere in unexpected ways.
* Fenced code has more features than indented code: importantly, specifying a
* programming language.
* Since CommonMark took the idea of fenced code from GFM, fenced code became
* widely supported.
* Due to this, its recommended to configure this rule with `'fenced'`.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats code blocks as fenced code when they have a language flag and as
* indented code otherwise.
* Pass
* [`fences: true`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsfences)
* to always use fenced code.
*
* @module code-block-style
* @summary
* remark-lint rule to warn when code blocks violate a given style.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module code-block-style
* @fileoverview
* Warn when code blocks do not adhere to a given style.
*
* Options: `'consistent'`, `'fenced'`, or `'indented'`, default: `'consistent'`.
*
* `'consistent'` detects the first used code block style and warns when
* subsequent code blocks uses different styles.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* formats code blocks using a fence if they have a language flag and
* indentation if not.
* Pass
* [`fences: true`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsfences)
* to always use fences for code blocks.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"setting": "indented", "name": "ok.md"}

View File

@ -10,24 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when code blocks do not adhere to a given style.
[`remark-lint`][mono] rule to warn when code blocks violate a given style.
Options: `'consistent'`, `'fenced'`, or `'indented'`, default: `'consistent'`.
## Contents
`'consistent'` detects the first used code block style and warns when
subsequent code blocks uses different styles.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintCodeBlockStyle[, config])`](#unifieduseremarklintcodeblockstyle-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## Fix
## What is this?
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
formats code blocks using a fence if they have a language flag and
indentation if not.
Pass
[`fences: true`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsfences)
to always use fences for code blocks.
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## When should I use this?
You can use this package to check that code blocks are consistent.
## Presets
@ -38,7 +47,120 @@ This rule is included in the following presets:
| [`remark-preset-lint-consistent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-consistent) | `'consistent'` |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | `'fenced'` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-code-block-style
```
In Deno with [Skypack][]:
```js
import remarkLintCodeBlockStyle from 'https://cdn.skypack.dev/remark-lint-code-block-style@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintCodeBlockStyle from 'https://cdn.skypack.dev/remark-lint-code-block-style@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintCodeBlockStyle from 'remark-lint-code-block-style'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintCodeBlockStyle)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-code-block-style example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-code-block-style",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintCodeBlockStyle`.
### `unified().use(remarkLintCodeBlockStyle[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'consistent'`) are accepted:
* `'fenced'`
— prefer fenced code blocks:
````markdown
```js
code()
```
````
* `'indented'`
— prefer indented code blocks:
```markdown
code()
```
* `'consistent'`
— detect the first used style and warn when further code blocks differ
## Recommendation
Indentation in markdown is complex, especially because lists and indented
code can interfere in unexpected ways.
Fenced code has more features than indented code: importantly, specifying a
programming language.
Since CommonMark took the idea of fenced code from GFM, fenced code became
widely supported.
Due to this, its recommended to configure this rule with `'fenced'`.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats code blocks as fenced code when they have a language flag and as
indented code otherwise.
Pass
[`fences: true`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsfences)
to always use fenced code.
## Examples
##### `ok.md`
@ -156,59 +278,12 @@ When configured with `'💩'`.
1:1: Incorrect code block style `💩`: use either `'consistent'`, `'fenced'`, or `'indented'`
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-code-block-style
```
This package exports no identifiers.
The default export is `remarkLintCodeBlockStyle`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-code-block-style",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-code-block-style readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintCodeBlockStyle from 'remark-lint-code-block-style'
remark()
.use(remarkLint)
+ .use(remarkLintCodeBlockStyle)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -250,17 +325,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,26 @@
/**
* ## When should I use this?
*
* You can use this package to check that the labels used in definitions
* are lowercase.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Definitions and references are matched together regardless of casing.
* Using uppercase in labels might incorrectly indicate that casing is of
* importance.
* Due to this, its recommended to use lowercase and turn this rule on.
*
* @module definition-case
* @summary
* remark-lint rule to warn when definition labels are not lowercase.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module definition-case
* @fileoverview
* Warn when definition labels are not lowercase.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,7 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when definition labels are not lowercase.
[`remark-lint`][mono] rule to warn when definition labels are not lowercase.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintDefinitionCase[, config])`](#unifieduseremarklintdefinitioncase-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that the labels used in definitions
are lowercase.
## Presets
@ -20,7 +46,93 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-definition-case
```
In Deno with [Skypack][]:
```js
import remarkLintDefinitionCase from 'https://cdn.skypack.dev/remark-lint-definition-case@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintDefinitionCase from 'https://cdn.skypack.dev/remark-lint-definition-case@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintDefinitionCase from 'remark-lint-definition-case'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintDefinitionCase)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-definition-case example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-definition-case",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintDefinitionCase`.
### `unified().use(remarkLintDefinitionCase[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
Definitions and references are matched together regardless of casing.
Using uppercase in labels might incorrectly indicate that casing is of
importance.
Due to this, its recommended to use lowercase and turn this rule on.
## Examples
##### `ok.md`
@ -48,59 +160,12 @@ No messages.
1:1-1:47: Do not use uppercase characters in definition labels
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-definition-case
```
This package exports no identifiers.
The default export is `remarkLintDefinitionCase`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-definition-case",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-definition-case readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintDefinitionCase from 'remark-lint-definition-case'
remark()
.use(remarkLint)
+ .use(remarkLintDefinitionCase)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -142,17 +207,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,28 @@
/**
* ## When should I use this?
*
* You can use this package to check that the labels used in definitions
* do not use meaningless white space.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Definitions and references are matched together by collapsing white space.
* Using more white space in labels might incorrectly indicate that they are of
* importance.
* Due to this, its recommended to use one space (or a line ending if needed)
* and turn this rule on.
*
* @module definition-spacing
* @summary
* remark-lint rule to warn when consecutive whitespace is used in
* a definition label.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module definition-spacing
* @fileoverview
* Warn when consecutive whitespace is used in a definition.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,7 +10,34 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when consecutive whitespace is used in a definition.
[`remark-lint`][mono] rule to warn when consecutive whitespace is used in
a definition label.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintDefinitionSpacing[, config])`](#unifieduseremarklintdefinitionspacing-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that the labels used in definitions
do not use meaningless white space.
## Presets
@ -20,7 +47,94 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-definition-spacing
```
In Deno with [Skypack][]:
```js
import remarkLintDefinitionSpacing from 'https://cdn.skypack.dev/remark-lint-definition-spacing@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintDefinitionSpacing from 'https://cdn.skypack.dev/remark-lint-definition-spacing@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintDefinitionSpacing from 'remark-lint-definition-spacing'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintDefinitionSpacing)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-definition-spacing example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-definition-spacing",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintDefinitionSpacing`.
### `unified().use(remarkLintDefinitionSpacing[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
Definitions and references are matched together by collapsing white space.
Using more white space in labels might incorrectly indicate that they are of
importance.
Due to this, its recommended to use one space (or a line ending if needed)
and turn this rule on.
## Examples
##### `ok.md`
@ -38,7 +152,7 @@ No messages.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
[example····domain]: http://example.com "Example Domain"
@ -50,59 +164,12 @@ Note: `·` represents a space.
1:1-1:57: Do not use consecutive whitespace in definition labels
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-definition-spacing
```
This package exports no identifiers.
The default export is `remarkLintDefinitionSpacing`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-definition-spacing",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-definition-spacing readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintDefinitionSpacing from 'remark-lint-definition-spacing'
remark()
.use(remarkLint)
+ .use(remarkLintDefinitionSpacing)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -144,17 +211,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,27 +1,44 @@
/**
* ## When should I use this?
*
* You can use this package to check that emphasis markers are consistent.
*
* ## API
*
* The following options (default: `'consistent'`) are accepted:
*
* * `'*'`
* prefer asterisks
* * `'_'`
* prefer underscores
* * `'consistent'`
* detect the first used style and warn when further emphasis differs
*
* ## Recommendation
*
* Underscores and asterisks work slightly different: asterisks can form
* emphasis in more cases than underscores.
* Because underscores are sometimes used to represent normal underscores inside
* words, there are extra rules supporting that.
* Asterisks can also be used as the marker of more constructs than underscores:
* lists.
* Due to having simpler parsing rules, looking more like syntax, and that they
* can be used for more constructs, its recommended to prefer asterisks.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats emphasis with asterisks by default.
* Pass
* [`emphasis: '_'`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsemphasis)
* to always use underscores.
*
* @module emphasis-marker
* @summary
* remark-lint rule to warn when emphasis markers are inconsistent.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module emphasis-marker
* @fileoverview
* Warn for violating emphasis markers.
*
* Options: `'consistent'`, `'*'`, or `'_'`, default: `'consistent'`.
*
* `'consistent'` detects the first used emphasis style and warns when
* subsequent emphasis use different styles.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* formats emphasis using `_` (underscore) by default.
* Pass
* [`emphasis: '*'`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsemphasis)
* to use `*` (asterisk) instead.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"setting": "*", "name": "ok.md"}
*

View File

@ -10,23 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn for violating emphasis markers.
[`remark-lint`][mono] rule to warn when emphasis markers are inconsistent.
Options: `'consistent'`, `'*'`, or `'_'`, default: `'consistent'`.
## Contents
`'consistent'` detects the first used emphasis style and warns when
subsequent emphasis use different styles.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintEmphasisMarker[, config])`](#unifieduseremarklintemphasismarker-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## Fix
## What is this?
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
formats emphasis using `_` (underscore) by default.
Pass
[`emphasis: '*'`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsemphasis)
to use `*` (asterisk) instead.
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## When should I use this?
You can use this package to check that emphasis markers are consistent.
## Presets
@ -37,7 +47,112 @@ This rule is included in the following presets:
| [`remark-preset-lint-consistent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-consistent) | `'consistent'` |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | `'*'` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-emphasis-marker
```
In Deno with [Skypack][]:
```js
import remarkLintEmphasisMarker from 'https://cdn.skypack.dev/remark-lint-emphasis-marker@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintEmphasisMarker from 'https://cdn.skypack.dev/remark-lint-emphasis-marker@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintEmphasisMarker from 'remark-lint-emphasis-marker'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintEmphasisMarker)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-emphasis-marker example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-emphasis-marker",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintEmphasisMarker`.
### `unified().use(remarkLintEmphasisMarker[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'consistent'`) are accepted:
* `'*'`
— prefer asterisks
* `'_'`
— prefer underscores
* `'consistent'`
— detect the first used style and warn when further emphasis differs
## Recommendation
Underscores and asterisks work slightly different: asterisks can form
emphasis in more cases than underscores.
Because underscores are sometimes used to represent normal underscores inside
words, there are extra rules supporting that.
Asterisks can also be used as the marker of more constructs than underscores:
lists.
Due to having simpler parsing rules, looking more like syntax, and that they
can be used for more constructs, its recommended to prefer asterisks.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats emphasis with asterisks by default.
Pass
[`emphasis: '_'`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsemphasis)
to always use underscores.
## Examples
##### `ok.md`
@ -124,59 +239,12 @@ When configured with `'💩'`.
1:1: Incorrect emphasis marker `💩`: use either `'consistent'`, `'*'`, or `'_'`
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-emphasis-marker
```
This package exports no identifiers.
The default export is `remarkLintEmphasisMarker`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-emphasis-marker",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-emphasis-marker readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintEmphasisMarker from 'remark-lint-emphasis-marker'
remark()
.use(remarkLint)
+ .use(remarkLintEmphasisMarker)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -218,17 +286,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,19 +1,34 @@
/**
* ## When should I use this?
*
* You can use this package to check that language flags of fenced code
* are used and consistent.
*
* ## API
*
* The following options (default: `undefined`) are accepted:
*
* * `Array<string>`
* as if passing `{flags: options}`
* * `Object` with the following fields:
* * `allowEmpty` (`boolean`, default: `false`)
* allow language flags to be omitted
* * `flags` (`Array<string>` default: `[]`)
* specific flags to allow (other flags will result in a warning)
*
* ## Recommendation
*
* While omitting the language flag is perfectly fine to signal that the code is
* plain text, it *could* point to a mistake.
* Its recommended to instead use a certain flag for plain text (such as `txt`)
* and to turn this rule on.
*
* @module fenced-code-flag
* @summary
* remark-lint rule to check that language flags of fenced code are used.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module fenced-code-flag
* @fileoverview
* Check fenced code block flags.
*
* Options: `Array<string>` or `Object`, optional.
*
* Providing an array is as passing `{flags: Array}`.
*
* The object can have an array of `'flags'` which are allowed: other flags
* will not be allowed.
* An `allowEmpty` field (`boolean`, default: `false`) can be set to allow
* code blocks without language flags.
*
* @example
* {"name": "ok.md"}

View File

@ -10,16 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Check fenced code block flags.
[`remark-lint`][mono] rule to check that language flags of fenced code are used.
Options: `Array<string>` or `Object`, optional.
## Contents
Providing an array is as passing `{flags: Array}`.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintFencedCodeFlag[, config])`](#unifieduseremarklintfencedcodeflag-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
The object can have an array of `'flags'` which are allowed: other flags
will not be allowed.
An `allowEmpty` field (`boolean`, default: `false`) can be set to allow
code blocks without language flags.
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that language flags of fenced code
are used and consistent.
## Presets
@ -29,7 +46,101 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | `{ allowEmpty: false }` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-fenced-code-flag
```
In Deno with [Skypack][]:
```js
import remarkLintFencedCodeFlag from 'https://cdn.skypack.dev/remark-lint-fenced-code-flag@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintFencedCodeFlag from 'https://cdn.skypack.dev/remark-lint-fenced-code-flag@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintFencedCodeFlag from 'remark-lint-fenced-code-flag'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintFencedCodeFlag)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-fenced-code-flag example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-fenced-code-flag",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintFencedCodeFlag`.
### `unified().use(remarkLintFencedCodeFlag[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `undefined`) are accepted:
* `Array<string>`
— as if passing `{flags: options}`
* `Object` with the following fields:
* `allowEmpty` (`boolean`, default: `false`)
— allow language flags to be omitted
* `flags` (`Array<string>` default: `[]`)
— specific flags to allow (other flags will result in a warning)
## Recommendation
While omitting the language flag is perfectly fine to signal that the code is
plain text, it *could* point to a mistake.
Its recommended to instead use a certain flag for plain text (such as `txt`)
and to turn this rule on.
## Examples
##### `ok.md`
@ -145,59 +256,12 @@ bravo()
1:1-3:4: Incorrect code language flag
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-fenced-code-flag
```
This package exports no identifiers.
The default export is `remarkLintFencedCodeFlag`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-fenced-code-flag",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-fenced-code-flag readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintFencedCodeFlag from 'remark-lint-fenced-code-flag'
remark()
.use(remarkLint)
+ .use(remarkLintFencedCodeFlag)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -239,17 +303,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,27 +1,38 @@
/**
* ## When should I use this?
*
* You can use this package to check that fenced code markers are consistent.
*
* ## API
*
* The following options (default: `'consistent'`) are accepted:
*
* * ``'`'``
* prefer grave accents
* * `'~'`
* prefer tildes
* * `'consistent'`
* detect the first used style and warn when further fenced code differs
*
* ## Recommendation
*
* Tildes are extremely uncommon.
* Due to this, its recommended to configure this rule with ``'`'``.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats fenced code with grave accents by default.
* Pass
* [`fence: '~'`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsfence)
* to always use tildes.
*
* @module fenced-code-marker
* @summary
* remark-lint rule to warn when fenced code markers are inconsistent.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module fenced-code-marker
* @fileoverview
* Warn for violating fenced code markers.
*
* Options: `` '`' ``, `'~'`, or `'consistent'`, default: `'consistent'`.
*
* `'consistent'` detects the first used fenced code marker style and warns
* when subsequent fenced code blocks use different styles.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* formats fences using ``'`'`` (grave accent) by default.
* Pass
* [`fence: '~'`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsfence)
* to use `~` (tilde) instead.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,23 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn for violating fenced code markers.
[`remark-lint`][mono] rule to warn when fenced code markers are inconsistent.
Options: ``'`'``, `'~'`, or `'consistent'`, default: `'consistent'`.
## Contents
`'consistent'` detects the first used fenced code marker style and warns
when subsequent fenced code blocks use different styles.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintFencedCodeMarker[, config])`](#unifieduseremarklintfencedcodemarker-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## Fix
## What is this?
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
formats fences using ``'`'`` (grave accent) by default.
Pass
[`fence: '~'`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionsfence)
to use `~` (tilde) instead.
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## When should I use this?
You can use this package to check that fenced code markers are consistent.
## Presets
@ -37,7 +47,106 @@ This rule is included in the following presets:
| [`remark-preset-lint-consistent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-consistent) | `'consistent'` |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | ``'`'`` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-fenced-code-marker
```
In Deno with [Skypack][]:
```js
import remarkLintFencedCodeMarker from 'https://cdn.skypack.dev/remark-lint-fenced-code-marker@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintFencedCodeMarker from 'https://cdn.skypack.dev/remark-lint-fenced-code-marker@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintFencedCodeMarker from 'remark-lint-fenced-code-marker'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintFencedCodeMarker)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-fenced-code-marker example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-fenced-code-marker",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintFencedCodeMarker`.
### `unified().use(remarkLintFencedCodeMarker[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'consistent'`) are accepted:
* ``'`'``
— prefer grave accents
* `'~'`
— prefer tildes
* `'consistent'`
— detect the first used style and warn when further fenced code differs
## Recommendation
Tildes are extremely uncommon.
Due to this, its recommended to configure this rule with ``'`'``.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats fenced code with grave accents by default.
Pass
[`fence: '~'`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsfence)
to always use tildes.
## Examples
##### `ok.md`
@ -143,59 +252,12 @@ When configured with `'💩'`.
1:1: Incorrect fenced code marker `💩`: use either `'consistent'`, `` '`' ``, or `'~'`
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-fenced-code-marker
```
This package exports no identifiers.
The default export is `remarkLintFencedCodeMarker`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-fenced-code-marker",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-fenced-code-marker readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintFencedCodeMarker from 'remark-lint-fenced-code-marker'
remark()
.use(remarkLint)
+ .use(remarkLintFencedCodeMarker)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -237,17 +299,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,16 +1,31 @@
/**
* ## When should I use this?
*
* You can use this package to check that file extensions are `md`.
*
* ## API
*
* The following options (default: `'md'`) are accepted:
*
* * `string` (example `'markdown'`)
* preferred file extension (no dot)
*
* > 👉 **Note**: does not warn when files have no file extensions (such as
* > `AUTHORS` or `LICENSE`).
*
* ## Recommendation
*
* Use `md` as its the most common.
* Also use `md` when your markdown contains common syntax extensions (such as
* GFM, frontmatter, or math).
* Do not use `md` for MDX: use `mdx` instead.
*
* @module file-extension
* @summary
* remark-lint rule to check the file extension.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module file-extension
* @fileoverview
* Warn when the file extension differ from the preferred extension.
*
* Does not warn when given documents have no file extensions (such as
* `AUTHORS` or `LICENSE`).
*
* Options: `string`, default: `'md'` Expected file extension.
*
* @example
* {"name": "readme.md"}
*

View File

@ -10,12 +10,32 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when the file extension differ from the preferred extension.
[`remark-lint`][mono] rule to check the file extension.
Does not warn when given documents have no file extensions (such as
`AUTHORS` or `LICENSE`).
## Contents
Options: `string`, default: `'md'` — Expected file extension.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintFileExtension[, config])`](#unifieduseremarklintfileextension-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that file extensions are `md`.
## Presets
@ -25,7 +45,99 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | `'md'` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-file-extension
```
In Deno with [Skypack][]:
```js
import remarkLintFileExtension from 'https://cdn.skypack.dev/remark-lint-file-extension@2?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintFileExtension from 'https://cdn.skypack.dev/remark-lint-file-extension@2?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintFileExtension from 'remark-lint-file-extension'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintFileExtension)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-file-extension example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-file-extension",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintFileExtension`.
### `unified().use(remarkLintFileExtension[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'md'`) are accepted:
* `string` (example `'markdown'`)
— preferred file extension (no dot)
> 👉 **Note**: does not warn when files have no file extensions (such as
> `AUTHORS` or `LICENSE`).
## Recommendation
Use `md` as its the most common.
Also use `md` when your markdown contains common syntax extensions (such as
GFM, frontmatter, or math).
Do not use `md` for MDX: use `mdx` instead.
## Examples
##### `readme.md`
@ -55,59 +167,12 @@ When configured with `'mkd'`.
No messages.
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-file-extension
```
This package exports no identifiers.
The default export is `remarkLintFileExtension`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-file-extension",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-file-extension readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintFileExtension from 'remark-lint-file-extension'
remark()
.use(remarkLint)
+ .use(remarkLintFileExtension)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -149,17 +214,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,12 +1,26 @@
/**
* ## When should I use this?
*
* You can use this package to check that definitions are placed at the end of
* the document.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* There are different strategies for placing definitions.
* The simplest is perhaps to place them all at the bottem of documents.
* If you prefer that, turn on this rule.
*
* @module final-definition
* @summary
* remark-lint rule to warn when definitions are used *in* the document
* instead of at the end.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module final-definition
* @fileoverview
* Warn when definitions are placed somewhere other than at the end of
* the file.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,8 +10,34 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when definitions are placed somewhere other than at the end of
the file.
[`remark-lint`][mono] rule to warn when definitions are used *in* the document
instead of at the end.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintFinalDefinition[, config])`](#unifieduseremarklintfinaldefinition-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that definitions are placed at the end of
the document.
## Presets
@ -21,7 +47,92 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-final-definition
```
In Deno with [Skypack][]:
```js
import remarkLintFinalDefinition from 'https://cdn.skypack.dev/remark-lint-final-definition@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintFinalDefinition from 'https://cdn.skypack.dev/remark-lint-final-definition@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintFinalDefinition from 'remark-lint-final-definition'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintFinalDefinition)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-final-definition example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-final-definition",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintFinalDefinition`.
### `unified().use(remarkLintFinalDefinition[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
There are different strategies for placing definitions.
The simplest is perhaps to place them all at the bottem of documents.
If you prefer that, turn on this rule.
## Examples
##### `ok.md`
@ -73,59 +184,12 @@ Paragraph.
No messages.
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-final-definition
```
This package exports no identifiers.
The default export is `remarkLintFinalDefinition`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-final-definition",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-final-definition readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintFinalDefinition from 'remark-lint-final-definition'
remark()
.use(remarkLint)
+ .use(remarkLintFinalDefinition)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -167,17 +231,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,53 +1,61 @@
/**
* ## When should I use this?
*
* You can use this package to check that fenced code markers are consistent.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Turn this rule on.
* See [StackExchange](https://unix.stackexchange.com/questions/18743) for more
* info.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* always adds final line endings.
*
* ## Example
*
* ##### `ok.md`
*
* ###### In
*
* > 👉 **Note**: `` represents a line feed (`\n`).
*
* ```markdown
* Alpha
* ```
*
* ###### Out
*
* No messages.
*
* ##### `not-ok.md`
*
* ###### In
*
* > 👉 **Note**: `` represents the end of the file.
*
* ```markdown
* Bravo
* ```
*
* ###### Out
*
* ```text
* 1:1: Missing newline character at end of file
* ```
*
* @module final-newline
* @summary
* remark-lint rule to warn when files dont end in a newline.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module final-newline
* @fileoverview
* Warn when a line feed at the end of a file is missing.
* Empty files are allowed.
*
* See [StackExchange](https://unix.stackexchange.com/questions/18743) for why.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* always adds a final line feed to files.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* ## Example
*
* ##### `ok.md`
*
* ###### In
*
* Note: `` represents LF.
*
* ```markdown
* Alpha
* ```
*
* ###### Out
*
* No messages.
*
* ##### `not-ok.md`
*
* ###### In
*
* Note: The below file does not have a final newline.
*
* ```markdown
* Bravo
* ```
*
* ###### Out
*
* ```text
* 1:1: Missing newline character at end of file
* ```
*/
/**

View File

@ -10,18 +10,131 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when a line feed at the end of a file is missing.
Empty files are allowed.
[`remark-lint`][mono] rule to warn when files dont end in a newline.
See [StackExchange](https://unix.stackexchange.com/questions/18743) for why.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintFinalNewline[, config])`](#unifieduseremarklintfinalnewline-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Example](#example)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that fenced code markers are consistent.
## Presets
This rule is included in the following presets:
| Preset | Setting |
| - | - |
| [`remark-preset-lint-recommended`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-recommended) | |
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-final-newline
```
In Deno with [Skypack][]:
```js
import remarkLintFinalNewline from 'https://cdn.skypack.dev/remark-lint-final-newline@2?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintFinalNewline from 'https://cdn.skypack.dev/remark-lint-final-newline@2?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintFinalNewline from 'remark-lint-final-newline'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintFinalNewline)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-final-newline example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-final-newline",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintFinalNewline`.
### `unified().use(remarkLintFinalNewline[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
Turn this rule on.
See [StackExchange](https://unix.stackexchange.com/questions/18743) for more
info.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
always adds a final line feed to files.
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
always adds final line endings.
## Example
@ -29,7 +142,7 @@ on how to automatically fix warnings for this rule.
###### In
Note: `␊` represents LF.
> 👉 **Note**: `␊` represents a line feed (`\n`).
```markdown
Alpha␊
@ -43,10 +156,10 @@ No messages.
###### In
Note: The below file does not have a final newline.
> 👉 **Note**: `␀` represents the end of the file.
```markdown
Bravo
Bravo
```
###### Out
@ -55,67 +168,12 @@ Bravo
1:1: Missing newline character at end of file
```
## Presets
## Compatibility
This rule is included in the following presets:
| Preset | Setting |
| - | - |
| [`remark-preset-lint-recommended`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-recommended) | |
## Install
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-final-newline
```
This package exports no identifiers.
The default export is `remarkLintFinalNewline`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-final-newline",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-final-newline readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintFinalNewline from 'remark-lint-final-newline'
remark()
.use(remarkLint)
+ .use(remarkLintFinalNewline)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -157,17 +215,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,13 +1,29 @@
/**
* ## When should I use this?
*
* You can use this package to check the heading rank of the first heading.
*
* ## API
*
* The following options (default: `1`) are accepted:
*
* * `number` (example `1`)
* expected rank of first heading
*
* ## Recommendation
*
* In most cases youd want to first heading in a markdown document to start at
* rank 1.
* In some cases a different rank makes more sense, such as when building a blog
* and generating the primary heading from frontmatter metadata, in which case
* a value of `2` can be defined here.
*
* @module first-heading-level
* @summary
* remark-lint rule to warn when the first heading has an unexpected rank.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module first-heading-level
* @fileoverview
* Warn when the first heading has a level other than a specified value.
*
* Options: `number`, default: `1`.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,15 +10,128 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when the first heading has a level other than a specified value.
[`remark-lint`][mono] rule to warn when the first heading has an unexpected rank.
Options: `number`, default: `1`.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintFirstHeadingLevel[, config])`](#unifieduseremarklintfirstheadinglevel-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check the heading rank of the first heading.
## Presets
This rule is not included in any default preset
This rule is not included in a preset maintained here.
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-first-heading-level
```
In Deno with [Skypack][]:
```js
import remarkLintFirstHeadingLevel from 'https://cdn.skypack.dev/remark-lint-first-heading-level@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintFirstHeadingLevel from 'https://cdn.skypack.dev/remark-lint-first-heading-level@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintFirstHeadingLevel from 'remark-lint-first-heading-level'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintFirstHeadingLevel)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-first-heading-level example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-first-heading-level",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintFirstHeadingLevel`.
### `unified().use(remarkLintFirstHeadingLevel[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `1`) are accepted:
* `number` (example `1`)
— expected rank of first heading
## Recommendation
In most cases youd want to first heading in a markdown document to start at
rank 1.
In some cases a different rank makes more sense, such as when building a blog
and generating the primary heading from frontmatter metadata, in which case
a value of `2` can be defined here.
## Examples
##### `ok.md`
@ -160,59 +273,12 @@ Paragraph.
1:1-1:17: First heading level should be `1`
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-first-heading-level
```
This package exports no identifiers.
The default export is `remarkLintFirstHeadingLevel`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-first-heading-level",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-first-heading-level readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintFirstHeadingLevel from 'remark-lint-first-heading-level'
remark()
.use(remarkLint)
+ .use(remarkLintFirstHeadingLevel)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -254,17 +320,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,26 @@
/**
* ## When should I use this?
*
* You can use this package to check that hard breaks use two spaces and
* not more.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Less than two spaces do not create a hard breaks and more than two spaces
* have no effect.
* Due to this, its recommended to turn this rule on.
*
* @module hard-break-spaces
* @summary
* remark-lint rule to warn when more spaces are used than needed
* for hard breaks.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module hard-break-spaces
* @fileoverview
* Warn when too many spaces are used to create a hard break.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,7 +10,34 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when too many spaces are used to create a hard break.
[`remark-lint`][mono] rule to warn when more spaces are used than needed
for hard breaks.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintHardBreakSpaces[, config])`](#unifieduseremarklinthardbreakspaces-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that hard breaks use two spaces and
not more.
## Presets
@ -21,13 +48,98 @@ This rule is included in the following presets:
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
| [`remark-preset-lint-recommended`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-recommended) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-hard-break-spaces
```
In Deno with [Skypack][]:
```js
import remarkLintHardBreakSpaces from 'https://cdn.skypack.dev/remark-lint-hard-break-spaces@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintHardBreakSpaces from 'https://cdn.skypack.dev/remark-lint-hard-break-spaces@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintHardBreakSpaces from 'remark-lint-hard-break-spaces'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintHardBreakSpaces)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-hard-break-spaces example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-hard-break-spaces",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintHardBreakSpaces`.
### `unified().use(remarkLintHardBreakSpaces[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
Less than two spaces do not create a hard breaks and more than two spaces
have no effect.
Due to this, its recommended to turn this rule on.
## Examples
##### `ok.md`
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
Lorem ipsum··
@ -42,7 +154,7 @@ No messages.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
Lorem ipsum···
@ -55,59 +167,12 @@ dolor sit amet.
1:12-2:1: Use two spaces for hard line breaks
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-hard-break-spaces
```
This package exports no identifiers.
The default export is `remarkLintHardBreakSpaces`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-hard-break-spaces",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-hard-break-spaces readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintHardBreakSpaces from 'remark-lint-hard-break-spaces'
remark()
.use(remarkLint)
+ .use(remarkLintHardBreakSpaces)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -149,17 +214,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,30 @@
/**
* ## When should I use this?
*
* You can use this package to check that heading ranks increment with one
* at a time.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* While markdown is not only used for HTML, HTML accessibility guidelines
* state that headings should increment by one at a time.
* As in, say the previous heading had a rank of 2 (so `<h2>`), then the
* following heading that is to be considered inside it should have a rank of
* 3 (`<h3>`).
* Due to this, its recommended that when HTML output is a goal of the
* document, that this rule is turned on.
*
* @module heading-increment
* @summary
* remark-lint rule to warn when heading ranks increment with more than
* 1 at a time.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module heading-increment
* @fileoverview
* Warn when headings increment with more than 1 level at a time.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,7 +10,34 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when headings increment with more than 1 level at a time.
[`remark-lint`][mono] rule to warn when heading ranks increment with more than
1 at a time.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintHeadingIncrement[, config])`](#unifieduseremarklintheadingincrement-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that heading ranks increment with one
at a time.
## Presets
@ -20,7 +47,96 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-heading-increment
```
In Deno with [Skypack][]:
```js
import remarkLintHeadingIncrement from 'https://cdn.skypack.dev/remark-lint-heading-increment@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintHeadingIncrement from 'https://cdn.skypack.dev/remark-lint-heading-increment@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintHeadingIncrement from 'remark-lint-heading-increment'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintHeadingIncrement)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-heading-increment example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-heading-increment",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintHeadingIncrement`.
### `unified().use(remarkLintHeadingIncrement[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
While markdown is not only used for HTML, HTML accessibility guidelines
state that headings should increment by one at a time.
As in, say the previous heading had a rank of 2 (so `<h2>`), then the
following heading that is to be considered “inside” it should have a rank of
3 (`<h3>`).
Due to this, its recommended that when HTML output is a goal of the
document, that this rule is turned on.
## Examples
##### `ok.md`
@ -52,59 +168,12 @@ No messages.
3:1-3:10: Heading levels should increment by one level at a time
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-heading-increment
```
This package exports no identifiers.
The default export is `remarkLintHeadingIncrement`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-heading-increment",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-heading-increment readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintHeadingIncrement from 'remark-lint-heading-increment'
remark()
.use(remarkLint)
+ .use(remarkLintHeadingIncrement)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -146,17 +215,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,30 +1,66 @@
/**
* ## When should I use this?
*
* You can use this package to check that headings are consistent.
*
* ## API
*
* The following options (default: `'consistent'`) are accepted:
*
* * `'atx'`
* prefer ATX headings:
* ```markdown
* ## Hello
* ```
* * `'atx-closed'`
* prefer ATX headings with a closing sequence:
* ```markdown
* ## Hello ##
* ```
* * `'setext'`
* prefer setext headings:
* ```markdown
* Hello
* -----
* ```
* * `'consistent'`
* detect the first used style and warn when further headings differ
*
* ## Recommendation
*
* Setext headings are limited in that they can only construct headings with a
* rank of one and two.
* On the other hand, they do allow multiple lines of content whereas ATX only
* allows one line.
* The number of used markers in their underline does not matter, leading to
* either:
*
* * 1 marker (`Hello\n-`), which is the bare minimum, and for rank 2 headings
* looks suspiciously like an empty list item
* * using as many markers as the content (`Hello\n-----`), which is hard to
* maintain
* * an arbitrary number (`Hello\n---`), which for rank 2 headings looks
* suspiciously like a thematic break
*
* Setext headings are also rather uncommon.
* Using a sequence of hashes at the end of ATX headings is even more uncommon.
* Due to this, its recommended to prefer ATX headings.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats headings as ATX by default.
* The other styles can be configured with
* [`setext: true`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionssetext)
* or
* [`closeAtx: true`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionscloseatx).
*
* @module heading-style
* @summary
* remark-lint rule to warn when headings violate a given style.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module heading-style
* @fileoverview
* Warn when a heading does not conform to a given style.
*
* Options: `'consistent'`, `'atx'`, `'atx-closed'`, or `'setext'`,
* default: `'consistent'`.
*
* `'consistent'` detects the first used heading style and warns when
* subsequent headings use different styles.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* formats headings as ATX by default.
* This can be configured with the
* [`setext`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionssetext)
* and
* [`closeAtx`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionscloseatx)
* options.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md", "setting": "atx"}
*

View File

@ -10,26 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when a heading does not conform to a given style.
[`remark-lint`][mono] rule to warn when headings violate a given style.
Options: `'consistent'`, `'atx'`, `'atx-closed'`, or `'setext'`,
default: `'consistent'`.
## Contents
`'consistent'` detects the first used heading style and warns when
subsequent headings use different styles.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintHeadingStyle[, config])`](#unifieduseremarklintheadingstyle-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## Fix
## What is this?
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
formats headings as ATX by default.
This can be configured with the
[`setext`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionssetext)
and
[`closeAtx`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionscloseatx)
options.
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## When should I use this?
You can use this package to check that headings are consistent.
## Presets
@ -40,7 +47,134 @@ This rule is included in the following presets:
| [`remark-preset-lint-consistent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-consistent) | `'consistent'` |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | `'atx'` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-heading-style
```
In Deno with [Skypack][]:
```js
import remarkLintHeadingStyle from 'https://cdn.skypack.dev/remark-lint-heading-style@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintHeadingStyle from 'https://cdn.skypack.dev/remark-lint-heading-style@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintHeadingStyle from 'remark-lint-heading-style'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintHeadingStyle)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-heading-style example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-heading-style",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintHeadingStyle`.
### `unified().use(remarkLintHeadingStyle[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'consistent'`) are accepted:
* `'atx'`
— prefer ATX headings:
```markdown
## Hello
```
* `'atx-closed'`
— prefer ATX headings with a closing sequence:
```markdown
## Hello ##
```
* `'setext'`
— prefer setext headings:
```markdown
Hello
-----
```
* `'consistent'`
— detect the first used style and warn when further headings differ
## Recommendation
Setext headings are limited in that they can only construct headings with a
rank of one and two.
On the other hand, they do allow multiple lines of content whereas ATX only
allows one line.
The number of used markers in their underline does not matter, leading to
either:
* 1 marker (`Hello\n-`), which is the bare minimum, and for rank 2 headings
looks suspiciously like an empty list item
* using as many markers as the content (`Hello\n-----`), which is hard to
maintain
* an arbitrary number (`Hello\n---`), which for rank 2 headings looks
suspiciously like a thematic break
Setext headings are also rather uncommon.
Using a sequence of hashes at the end of ATX headings is even more uncommon.
Due to this, its recommended to prefer ATX headings.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats headings as ATX by default.
The other styles can be configured with
[`setext: true`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionssetext)
or
[`closeAtx: true`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionscloseatx).
## Examples
##### `ok.md`
@ -128,59 +262,12 @@ When configured with `'💩'`.
1:1: Incorrect heading style type `💩`: use either `'consistent'`, `'atx'`, `'atx-closed'`, or `'setext'`
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-heading-style
```
This package exports no identifiers.
The default export is `remarkLintHeadingStyle`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-heading-style",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-heading-style readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintHeadingStyle from 'remark-lint-heading-style'
remark()
.use(remarkLint)
+ .use(remarkLintHeadingStyle)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -222,17 +309,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,23 +1,37 @@
/**
* ## When should I use this?
*
* You can use this package to check that line endings are consistent.
*
* ## API
*
*
* The following options (default: `'consistent'`) are accepted:
*
* * `'unix'`
* prefer Unix line endings (`\n`, ``):
* * `'window'`
* prefer Windows line endings (`\r\n`, `␍␊`):
* * `'consistent'`
* detect the first used style and warn when further line endings differ
*
* ## Recommendation
*
* In Git projects, you can configure it to automatically switch between line
* endings based on who checks the repo out.
* In other places, you might manually want to force that one or the other is
* used, in which case this rule can be used and configured.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* always uses Unix linebreaks.
* @module linebreak-style
* @summary
* remark-lint rule to warn when line endings dont match a given style.
* @author Titus Wormer
* @copyright 2017 Titus Wormer
* @license MIT
* @module linebreak-style
* @fileoverview
* Warn when linebreaks violate a given or detected style.
*
* Options: either `'unix'` (for `\n`, denoted as ``), `'windows'` (for `\r\n`,
* denoted as `␍␊`), or `'consistent'` (to detect the first used linebreak in
* a file). Default: `'consistent'`.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* always uses unix linebreaks.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok-consistent-as-windows.md"}
*

View File

@ -10,31 +10,143 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when linebreaks violate a given or detected style.
[`remark-lint`][mono] rule to warn when line endings dont match a given style.
Options: either `'unix'` (for `\n`, denoted as `␊`), `'windows'` (for `\r\n`,
denoted as `␍␊`), or `'consistent'` (to detect the first used linebreak in
a file). Default: `'consistent'`.
## Contents
## Fix
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintLinebreakStyle[, config])`](#unifieduseremarklintlinebreakstyle-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
always uses unix linebreaks.
## What is this?
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that line endings are consistent.
## Presets
This rule is not included in any default preset
This rule is not included in a preset maintained here.
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-linebreak-style
```
In Deno with [Skypack][]:
```js
import remarkLintLinebreakStyle from 'https://cdn.skypack.dev/remark-lint-linebreak-style@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintLinebreakStyle from 'https://cdn.skypack.dev/remark-lint-linebreak-style@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintLinebreakStyle from 'remark-lint-linebreak-style'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintLinebreakStyle)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-linebreak-style example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-linebreak-style",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintLinebreakStyle`.
### `unified().use(remarkLintLinebreakStyle[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'consistent'`) are accepted:
* `'unix'`
— prefer Unix line endings (`\n`, `␊`):
* `'window'`
— prefer Windows line endings (`\r\n`, `␍␊`):
* `'consistent'`
— detect the first used style and warn when further line endings differ
## Recommendation
In Git projects, you can configure it to automatically switch between line
endings based on who checks the repo out.
In other places, you might manually want to force that one or the other is
used, in which case this rule can be used and configured.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
always uses Unix linebreaks.
## Examples
##### `ok-consistent-as-windows.md`
###### In
Note: `␍␊` represents a carriage return and a line feed.
> 👉 **Note**: `␍␊` represents a carriage return and a line feed.
```markdown
Alpha␍␊
@ -49,7 +161,7 @@ No messages.
###### In
Note: `␊` represents a line feed.
> 👉 **Note**: `␊` represents a line feed.
```markdown
Alpha␊
@ -66,7 +178,7 @@ When configured with `'unix'`.
###### In
Note: `␍␊` represents a carriage return and a line feed.
> 👉 **Note**: `␍␊` represents a carriage return and a line feed.
```markdown
Alpha␍␊
@ -84,7 +196,7 @@ When configured with `'windows'`.
###### In
Note: `␊` represents a line feed.
> 👉 **Note**: `␊` represents a line feed.
```markdown
Alpha␊
@ -96,59 +208,12 @@ Alpha␊
1:6: Expected linebreaks to be windows (`\r\n`), not unix (`\n`)
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-linebreak-style
```
This package exports no identifiers.
The default export is `remarkLintLinebreakStyle`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-linebreak-style",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-linebreak-style readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintLinebreakStyle from 'remark-lint-linebreak-style'
remark()
.use(remarkLint)
+ .use(remarkLintLinebreakStyle)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -190,17 +255,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,25 +1,48 @@
/**
* ## When should I use this?
*
* You can use this package to check that title markers are consistent.
*
* ## API
*
* The following options (default: `'consistent'`) are accepted:
*
* * `'"'`
* prefer double quotes
* * `"'"`
* prefer single quotes
* * `'()'`
* prefer parens
* * `'consistent'`
* detect the first used style and warn when further titles differ
*
* ## Recommendation
*
* Parens in titles were not supported in markdown before CommonMark.
* While they should work in most places now, not all markdown parsers follow
* CommonMark.
* Parens for titles also arguably look a bit weird because theyre inside more
* parens: `[text](url (title))`.
*
* In HTML, attributes are commonly written with double quotes.
* Due to this, titles are almost exclusively wrapped in double quotes in
* markdown, so its recommended to configure this rule with `'"'`.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats titles with double quotes by default.
* Pass
* [`quote: "'"`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsquote)
* to use single quotes.
* There is no option to use parens.
*
* @module link-title-style
* @summary
* remark-lint rule to warn when title markers are inconsistent.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module link-title-style
* @fileoverview
* Warn when link and definition titles occur with incorrect quotes.
*
* Options: `'consistent'`, `'"'`, `'\''`, or `'()'`, default: `'consistent'`.
*
* `'consistent'` detects the first used quote style and warns when subsequent
* titles use different styles.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* uses `'` (single quote) for titles if they contain a double quote, and `"`
* (double quotes) otherwise.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md", "setting": "\""}
*

View File

@ -10,21 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when link and definition titles occur with incorrect quotes.
[`remark-lint`][mono] rule to warn when title markers are inconsistent.
Options: `'consistent'`, `'"'`, `'\''`, or `'()'`, default: `'consistent'`.
## Contents
`'consistent'` detects the first used quote style and warns when subsequent
titles use different styles.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintLinkTitleStyle[, config])`](#unifieduseremarklintlinktitlestyle-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## Fix
## What is this?
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
uses `'` (single quote) for titles if they contain a double quote, and `"`
(double quotes) otherwise.
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## When should I use this?
You can use this package to check that title markers are consistent.
## Presets
@ -35,7 +47,116 @@ This rule is included in the following presets:
| [`remark-preset-lint-consistent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-consistent) | `'consistent'` |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | `'"'` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-link-title-style
```
In Deno with [Skypack][]:
```js
import remarkLintLinkTitleStyle from 'https://cdn.skypack.dev/remark-lint-link-title-style@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintLinkTitleStyle from 'https://cdn.skypack.dev/remark-lint-link-title-style@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintLinkTitleStyle from 'remark-lint-link-title-style'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintLinkTitleStyle)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-link-title-style example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-link-title-style",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintLinkTitleStyle`.
### `unified().use(remarkLintLinkTitleStyle[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'consistent'`) are accepted:
* `'"'`
— prefer double quotes
* `"'"`
— prefer single quotes
* `'()'`
— prefer parens
* `'consistent'`
— detect the first used style and warn when further titles differ
## Recommendation
Parens in titles were not supported in markdown before CommonMark.
While they should work in most places now, not all markdown parsers follow
CommonMark.
Parens for titles also arguably look a bit weird because theyre inside more
parens: `[text](url (title))`.
In HTML, attributes are commonly written with double quotes.
Due to this, titles are almost exclusively wrapped in double quotes in
markdown, so its recommended to configure this rule with `'"'`.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats titles with double quotes by default.
Pass
[`quote: "'"`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionsquote)
to use single quotes.
There is no option to use parens.
## Examples
##### `ok.md`
@ -168,59 +289,12 @@ When configured with `'💩'`.
1:1: Incorrect link title style marker `💩`: use either `'consistent'`, `'"'`, `'\''`, or `'()'`
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-link-title-style
```
This package exports no identifiers.
The default export is `remarkLintLinkTitleStyle`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-link-title-style",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-link-title-style readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintLinkTitleStyle from 'remark-lint-link-title-style'
remark()
.use(remarkLint)
+ .use(remarkLintLinkTitleStyle)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -262,17 +336,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,19 +1,40 @@
/**
* ## When should I use this?
*
* You can use this package to check that list items are not indented.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* There is no specific handling of indented list items (or anything else) in
* markdown.
* While it is possible to use an indent to align ordered lists on their marker:
*
* ```markdown
* 1. One
* 10. Ten
* 100. Hundred
* ```
*
* such a style is uncommon and a bit hard to maintain: adding a 10th item
* means 9 other items have to change (more arduous, while unlikely, would be
* the 100th item).
* Hence, its recommended to not indent items and to turn this rule on.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats all items without indent.
*
* @module list-item-bullet-indent
* @summary
* remark-lint rule to warn when list items are indented.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module list-item-bullet-indent
* @fileoverview
* Warn when list item bullets are indented.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* removes all indentation before bullets.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,15 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when list item bullets are indented.
[`remark-lint`][mono] rule to warn when list items are indented.
## Fix
## Contents
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
removes all indentation before bullets.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintListItemBulletIndent[, config])`](#unifieduseremarklintlistitembulletindent-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that list items are not indented.
## Presets
@ -28,7 +46,108 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-recommended`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-recommended) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-list-item-bullet-indent
```
In Deno with [Skypack][]:
```js
import remarkLintListItemBulletIndent from 'https://cdn.skypack.dev/remark-lint-list-item-bullet-indent@4?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintListItemBulletIndent from 'https://cdn.skypack.dev/remark-lint-list-item-bullet-indent@4?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintListItemBulletIndent from 'remark-lint-list-item-bullet-indent'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintListItemBulletIndent)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-list-item-bullet-indent example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-list-item-bullet-indent",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintListItemBulletIndent`.
### `unified().use(remarkLintListItemBulletIndent[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
There is no specific handling of indented list items (or anything else) in
markdown.
While it is possible to use an indent to align ordered lists on their marker:
```markdown
1. One
10. Ten
100. Hundred
```
…such a style is uncommon and a bit hard to maintain: adding a 10th item
means 9 other items have to change (more arduous, while unlikely, would be
the 100th item).
Hence, its recommended to not indent items and to turn this rule on.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats all items without indent.
## Examples
##### `ok.md`
@ -49,7 +168,7 @@ No messages.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
Paragraph.
@ -65,59 +184,12 @@ Paragraph.
4:2: Incorrect indentation before bullet: remove 1 space
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-list-item-bullet-indent
```
This package exports no identifiers.
The default export is `remarkLintListItemBulletIndent`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-list-item-bullet-indent",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-list-item-bullet-indent readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintListItemBulletIndent from 'remark-lint-list-item-bullet-indent'
remark()
.use(remarkLint)
+ .use(remarkLintListItemBulletIndent)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -159,17 +231,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,28 @@
/**
* ## When should I use this?
*
* You can use this package to check that list item content is aligned.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* The position of the first child in a list item matters.
* Further children should align with it.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* aligns the content of items.
*
* @module list-item-content-indent
* @summary
* remark-lint rule to warn when list item content is not aligned.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module list-item-content-indent
* @fileoverview
* Warn when the content of a list item has mixed indentation.
*
* @example
* {"name": "ok.md", "gfm": true}
*
@ -59,11 +76,12 @@ const remarkLintListItemContentIndent = lintRule(
continue
}
// Get indentation for the first child. Only the first item can have a
// checkbox, so here we remove that from the column.
// Get indentation for the first child.
// Only the first item can have a checkbox, so here we remove that from
// the column.
if (index === 0) {
// If theres a checkbox before the content, look backwards to find the
// start of that checkbox.
// If theres a checkbox before the content, look backwards to find
// the start of that checkbox.
if (typeof node.checked === 'boolean') {
let char = begin.offset - 1

View File

@ -10,7 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when the content of a list item has mixed indentation.
[`remark-lint`][mono] rule to warn when list item content is not aligned.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintListItemContentIndent[, config])`](#unifieduseremarklintlistitemcontentindent-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that list item content is aligned.
## Presets
@ -21,15 +47,104 @@ This rule is included in the following presets:
| [`remark-preset-lint-consistent`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-consistent) | |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-list-item-content-indent
```
In Deno with [Skypack][]:
```js
import remarkLintListItemContentIndent from 'https://cdn.skypack.dev/remark-lint-list-item-content-indent@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintListItemContentIndent from 'https://cdn.skypack.dev/remark-lint-list-item-content-indent@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintListItemContentIndent from 'remark-lint-list-item-content-indent'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintListItemContentIndent)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-list-item-content-indent example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-list-item-content-indent",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintListItemContentIndent`.
### `unified().use(remarkLintListItemContentIndent[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
The position of the first child in a list item matters.
Further children should align with it.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
aligns the content of items.
## Examples
##### `ok.md`
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
1.·[x] Alpha
@ -44,9 +159,9 @@ No messages.
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
1.·[x] Charlie
@ -59,59 +174,12 @@ Note: `·` represents a space.
2:5: Dont use mixed indentation for children, remove 1 space
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-list-item-content-indent
```
This package exports no identifiers.
The default export is `remarkLintListItemContentIndent`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-list-item-content-indent",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-list-item-content-indent readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintListItemContentIndent from 'remark-lint-list-item-content-indent'
remark()
.use(remarkLint)
+ .use(remarkLintListItemContentIndent)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -153,17 +221,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,27 +1,64 @@
/**
* ## When should I use this?
*
* You can use this package to check that the spacing between list item markers
* and content is inconsistent.
*
* ## API
*
* The following options (default: `'tab-size'`) are accepted:
*
* * `'space'`
* prefer a single space
* * `'tab-size'`
* prefer spaces the size of the next tab stop
* * `'mixed'`
* prefer `'space'` for tight lists and `'tab-size'` for loose lists
*
* ## Recommendation
*
* First, some background.
* The number of spaces that occur after list markers (`*`, `-`, and `+` for
* unordered lists, or `.` and `)` for unordered lists) and before the content
* on the first line, defines how much indentation can be used for further
* lines.
* At least one space is required and up to 4 spaces are allowed (if there is no
* further content after the marker then its a blank line which is handled as
* if there was one space; if there are 5 or more spaces and then content, its
* also seen as one space and the rest is seen as indented code).
*
* There are two types of lists in markdown (other than ordered and unordered):
* tight and loose lists.
* Lists are tight by default but if there is a blank line between two list
* items or between two blocks inside an item, that turns the whole list into a
* loose list.
* When turning markdown into HTML, paragraphs in tight lists are not wrapped
* in `<p>` tags.
*
* Historically, how indentation of lists works in markdown has been a mess,
* especially with how they interact with indented code.
* CommonMark made that a *lot* better, but there remain (documented but
* complex) edge cases and some behavior intuitive.
* Due to this, the default of this list is `'tab-size'`, which worked the best
* in most markdown parsers.
* Currently, the situation between markdown parsers is better, so choosing
* `'space'` (which seems to be the most common style used by authors) should
* be okay.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* uses `'tab-size'` (named `'tab'` there) by default.
* [`listItemIndent: '1'` (for `'space'`) or `listItemIndent: 'mixed'`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionslistitemindent)
* is supported.
*
* @module list-item-indent
* @summary
* remark-lint rule to warn when spacing between list item markers and
* content is inconsistent.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module list-item-indent
* @fileoverview
* Warn when the spacing between a list items bullet and its content violates
* a given style.
*
* Options: `'tab-size'`, `'mixed'`, or `'space'`, default: `'tab-size'`.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* uses `'tab-size'` (named `'tab'` there) by default to ensure Markdown is
* seen the same way across vendors.
* This can be configured with the
* [`listItemIndent`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionslistitemindent)
* option.
* This rules `'space'` option is named `'1'` there.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,23 +10,35 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when the spacing between a list items bullet and its content violates
a given style.
[`remark-lint`][mono] rule to warn when spacing between list item markers and
content is inconsistent.
Options: `'tab-size'`, `'mixed'`, or `'space'`, default: `'tab-size'`.
## Contents
## Fix
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintListItemIndent[, config])`](#unifieduseremarklintlistitemindent-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
uses `'tab-size'` (named `'tab'` there) by default to ensure Markdown is
seen the same way across vendors.
This can be configured with the
[`listItemIndent`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify#optionslistitemindent)
option.
This rules `'space'` option is named `'1'` there.
## What is this?
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that the spacing between list item markers
and content is inconsistent.
## Presets
@ -37,13 +49,136 @@ This rule is included in the following presets:
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | `'mixed'` |
| [`remark-preset-lint-recommended`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-recommended) | `'tab-size'` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-list-item-indent
```
In Deno with [Skypack][]:
```js
import remarkLintListItemIndent from 'https://cdn.skypack.dev/remark-lint-list-item-indent@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintListItemIndent from 'https://cdn.skypack.dev/remark-lint-list-item-indent@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintListItemIndent from 'remark-lint-list-item-indent'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintListItemIndent)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-list-item-indent example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-list-item-indent",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintListItemIndent`.
### `unified().use(remarkLintListItemIndent[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'tab-size'`) are accepted:
* `'space'`
— prefer a single space
* `'tab-size'`
— prefer spaces the size of the next tab stop
* `'mixed'`
— prefer `'space'` for tight lists and `'tab-size'` for loose lists
## Recommendation
First, some background.
The number of spaces that occur after list markers (`*`, `-`, and `+` for
unordered lists, or `.` and `)` for unordered lists) and before the content
on the first line, defines how much indentation can be used for further
lines.
At least one space is required and up to 4 spaces are allowed (if there is no
further content after the marker then its a blank line which is handled as
if there was one space; if there are 5 or more spaces and then content, its
also seen as one space and the rest is seen as indented code).
There are two types of lists in markdown (other than ordered and unordered):
tight and loose lists.
Lists are tight by default but if there is a blank line between two list
items or between two blocks inside an item, that turns the whole list into a
loose list.
When turning markdown into HTML, paragraphs in tight lists are not wrapped
in `<p>` tags.
Historically, how indentation of lists works in markdown has been a mess,
especially with how they interact with indented code.
CommonMark made that a *lot* better, but there remain (documented but
complex) edge cases and some behavior intuitive.
Due to this, the default of this list is `'tab-size'`, which worked the best
in most markdown parsers.
Currently, the situation between markdown parsers is better, so choosing
`'space'` (which seems to be the most common style used by authors) should
be okay.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
uses `'tab-size'` (named `'tab'` there) by default.
[`listItemIndent: '1'` (for `'space'`) or `listItemIndent: 'mixed'`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify#optionslistitemindent)
is supported.
## Examples
##### `ok.md`
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
*···List
@ -73,7 +208,7 @@ When configured with `'mixed'`.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
*·List item.
@ -101,7 +236,7 @@ When configured with `'mixed'`.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
*···List item.
@ -119,7 +254,7 @@ When configured with `'space'`.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
*·List item.
@ -147,7 +282,7 @@ When configured with `'space'`.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
*···List
@ -166,7 +301,7 @@ When configured with `'tab-size'`.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
*·List
@ -189,59 +324,12 @@ When configured with `'💩'`.
1:1: Incorrect list-item indent style `💩`: use either `'tab-size'`, `'space'`, or `'mixed'`
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-list-item-indent
```
This package exports no identifiers.
The default export is `remarkLintListItemIndent`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-list-item-indent",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-list-item-indent readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintListItemIndent from 'remark-lint-list-item-indent'
remark()
.use(remarkLint)
+ .use(remarkLintListItemIndent)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -283,17 +371,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,25 +1,43 @@
/**
* ## When should I use this?
*
* You can use this package to check that lists are loose or tight when
* they should be.
*
* ## API
*
* The following options (default: `undefined`) are accepted:
*
* * `Object` with the following fields:
* * `checkBlanks` (`boolean`, default: `false`)
* adhere to CommonMark looseness instead of markdown-style-guide
* preference
*
* ## Recommendation
*
* First, some background.
* There are two types of lists in markdown (other than ordered and unordered):
* tight and loose lists.
* Lists are tight by default but if there is a blank line between two list
* items or between two blocks inside an item, that turns the whole list into a
* loose list.
* When turning markdown into HTML, paragraphs in tight lists are not wrapped
* in `<p>` tags.
*
* This rule defaults to the
* [`markdown style guide`](https://cirosantilli.com/markdown-style-guide/)
* preference for which lists should be loose or not: loose when at least one
* item spans more than one line, tight otherwise.
* With `{checkBlanks: true}`, this rule dictates that when at least one item is
* loose, all items must be loose.
*
* @module list-item-spacing
* @summary
* remark-lint rule to warn when lists are loose when they should be tight,
* or vice versa.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module list-item-spacing
* @fileoverview
* Warn when list looseness is incorrect, such as being tight when it should
* be loose, and vice versa.
*
* According to the [`markdown-style-guide`](http://www.cirosantilli.com/markdown-style-guide/),
* if one or more list items in a list spans more than one line, the list is
* required to have blank lines between each item.
* And otherwise, there should not be blank lines between items.
*
* By default, all items must be spread out (a blank line must be between
* them) if one or more items are multiline (span more than one line).
* Otherwise, the list must be tight (no blank line must be between items).
*
* If you pass `{checkBlanks: true}`, all items must be spread out if one or
* more items contain blank lines.
* Otherwise, the list must be tight.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,21 +10,34 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when list looseness is incorrect, such as being tight when it should
be loose, and vice versa.
[`remark-lint`][mono] rule to warn when lists are loose when they should be tight,
or vice versa.
According to the [`markdown-style-guide`](http://www.cirosantilli.com/markdown-style-guide/),
if one or more list items in a list spans more than one line, the list is
required to have blank lines between each item.
And otherwise, there should not be blank lines between items.
## Contents
By default, all items must be spread out (a blank line must be between
them) if one or more items are multiline (span more than one line).
Otherwise, the list must be tight (no blank line must be between items).
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintListItemSpacing[, config])`](#unifieduseremarklintlistitemspacing-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
If you pass `{checkBlanks: true}`, all items must be spread out if one or
more items contain blank lines.
Otherwise, the list must be tight.
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that lists are loose or tight when
they should be.
## Presets
@ -34,7 +47,109 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-list-item-spacing
```
In Deno with [Skypack][]:
```js
import remarkLintListItemSpacing from 'https://cdn.skypack.dev/remark-lint-list-item-spacing@4?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintListItemSpacing from 'https://cdn.skypack.dev/remark-lint-list-item-spacing@4?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintListItemSpacing from 'remark-lint-list-item-spacing'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintListItemSpacing)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-list-item-spacing example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-list-item-spacing",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintListItemSpacing`.
### `unified().use(remarkLintListItemSpacing[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `undefined`) are accepted:
* `Object` with the following fields:
* `checkBlanks` (`boolean`, default: `false`)
— adhere to CommonMark looseness instead of markdown-style-guide
preference
## Recommendation
First, some background.
There are two types of lists in markdown (other than ordered and unordered):
tight and loose lists.
Lists are tight by default but if there is a blank line between two list
items or between two blocks inside an item, that turns the whole list into a
loose list.
When turning markdown into HTML, paragraphs in tight lists are not wrapped
in `<p>` tags.
This rule defaults to the
[`markdown style guide`](https://cirosantilli.com/markdown-style-guide/)
preference for which lists should be loose or not: loose when at least one
item spans more than one line, tight otherwise.
With `{checkBlanks: true}`, this rule dictates that when at least one item is
loose, all items must be loose.
## Examples
##### `ok.md`
@ -154,59 +269,12 @@ A loose list:
14:15-16:1: Extraneous new line after list item
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-list-item-spacing
```
This package exports no identifiers.
The default export is `remarkLintListItemSpacing`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-list-item-spacing",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-list-item-spacing readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintListItemSpacing from 'remark-lint-list-item-spacing'
remark()
.use(remarkLint)
+ .use(remarkLintListItemSpacing)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -248,17 +316,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,15 +1,31 @@
/**
* ## When should I use this?
*
* You can use this package to check that heading text is within reason.
*
* ## API
*
* The following options (default: `60`) are accepted:
*
* * `number` (example: `72`)
* max number of characters to accept in heading text
*
* Ignores syntax, only checks the plain text content.
*
* ## Recommendation
*
* While this rule is sometimes annoying, reasonable size headings
* do help SEO purposes (bots prefer reasonable headings), visual users
* (headings are typically displayed quite large), and users of screen readers
* (who typically use jump to heading features to navigate within a page,
* which reads every heading out loud).
*
* @module maximum-heading-length
* @summary
* remark-lint rule to warn when headings are too long.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module maximum-heading-length
* @fileoverview
* Warn when headings are too long.
*
* Options: `number`, default: `60`.
*
* Ignores Markdown syntax, only checks the plain text content.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,11 +10,32 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when headings are too long.
[`remark-lint`][mono] rule to warn when headings are too long.
Options: `number`, default: `60`.
## Contents
Ignores Markdown syntax, only checks the plain text content.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintMaximumHeadingLength[, config])`](#unifieduseremarklintmaximumheadinglength-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that heading text is within reason.
## Presets
@ -24,7 +45,99 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-maximum-heading-length
```
In Deno with [Skypack][]:
```js
import remarkLintMaximumHeadingLength from 'https://cdn.skypack.dev/remark-lint-maximum-heading-length@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintMaximumHeadingLength from 'https://cdn.skypack.dev/remark-lint-maximum-heading-length@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintMaximumHeadingLength from 'remark-lint-maximum-heading-length'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintMaximumHeadingLength)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-maximum-heading-length example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-maximum-heading-length",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintMaximumHeadingLength`.
### `unified().use(remarkLintMaximumHeadingLength[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `60`) are accepted:
* `number` (example: `72`)
— max number of characters to accept in heading text
Ignores syntax, only checks the plain text content.
## Recommendation
While this rule is sometimes annoying, reasonable size headings
do help SEO purposes (bots prefer reasonable headings), visual users
(headings are typically displayed quite large), and users of screen readers
(who typically use “jump to heading” features to navigate within a page,
which reads every heading out loud).
## Examples
##### `not-ok.md`
@ -56,59 +169,12 @@ When configured with `40`.
No messages.
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-maximum-heading-length
```
This package exports no identifiers.
The default export is `remarkLintMaximumHeadingLength`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-maximum-heading-length",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-maximum-heading-length readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintMaximumHeadingLength from 'remark-lint-maximum-heading-length'
remark()
.use(remarkLint)
+ .use(remarkLintMaximumHeadingLength)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -150,17 +216,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,19 +1,30 @@
/**
* ## When should I use this?
*
* You can use this package to check that lines do not exceed a certain size.
*
* ## API
*
* The following options (default: `80`) are accepted:
*
* * `number` (example: `72`)
* max number of characters to accept in heading text
*
* Ignores nodes that cannot be wrapped, such as headings, tables, code,
* definitions, HTML, and JSX.
* Ignores images, links, and code (inline) if they start before the wrap, end
* after the wrap, and theres no white space after them.
*
* ## Recommendation
*
* Whether to wrap prose or not is a stylistic choice.
*
* @module maximum-line-length
* @summary
* remark-lint rule to warn when lines are too long.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module maximum-line-length
* @fileoverview
* Warn when lines are too long.
*
* Options: `number`, default: `80`.
*
* Ignores nodes that cannot be wrapped, such as headings, tables, code,
* definitions, HTML, and JSX.
*
* Ignores images, links, and inline code if they start before the wrap, end
* after the wrap, and theres no whitespace after them.
*
* @example
* {"name": "ok.md", "positionless": true, "gfm": true}
*
@ -38,7 +49,7 @@
*
* <a><b><i><p><q><s><u>alpha bravo charlie delta echo foxtrot golf</u></s></q></p></i></b></a>
*
* The following is also fine, because there is no whitespace.
* The following is also fine (note the `.`), because there is no whitespace.
*
* <http://this-long-url-with-a-long-domain-is-ok.co.uk/a-long-path?query=variables>.
*

View File

@ -10,15 +10,32 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when lines are too long.
[`remark-lint`][mono] rule to warn when lines are too long.
Options: `number`, default: `80`.
## Contents
Ignores nodes that cannot be wrapped, such as headings, tables, code,
definitions, HTML, and JSX.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintMaximumLineLength[, config])`](#unifieduseremarklintmaximumlinelength-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
Ignores images, links, and inline code if they start before the wrap, end
after the wrap, and theres no whitespace after them.
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that lines do not exceed a certain size.
## Presets
@ -28,7 +45,98 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | `80` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-maximum-line-length
```
In Deno with [Skypack][]:
```js
import remarkLintMaximumLineLength from 'https://cdn.skypack.dev/remark-lint-maximum-line-length@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintMaximumLineLength from 'https://cdn.skypack.dev/remark-lint-maximum-line-length@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintMaximumLineLength from 'remark-lint-maximum-line-length'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintMaximumLineLength)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-maximum-line-length example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-maximum-line-length",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintMaximumLineLength`.
### `unified().use(remarkLintMaximumLineLength[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `80`) are accepted:
* `number` (example: `72`)
— max number of characters to accept in heading text
Ignores nodes that cannot be wrapped, such as headings, tables, code,
definitions, HTML, and JSX.
Ignores images, links, and code (inline) if they start before the wrap, end
after the wrap, and theres no white space after them.
## Recommendation
Whether to wrap prose or not is a stylistic choice.
## Examples
##### `ok-mixed-line-endings.md`
@ -36,9 +144,9 @@ When configured with `10`.
###### In
Note: `␍␊` represents a carriage return and a line feed.
> 👉 **Note**: `␍␊` represents a carriage return and a line feed.
Note: `␊` represents a line feed.
> 👉 **Note**: `␊` represents a line feed.
```markdown
0123456789␍␊
@ -57,9 +165,9 @@ When configured with `10`.
###### In
Note: `␍␊` represents a carriage return and a line feed.
> 👉 **Note**: `␍␊` represents a carriage return and a line feed.
Note: `␊` represents a line feed.
> 👉 **Note**: `␊` represents a line feed.
```markdown
012345678901␍␊
@ -112,7 +220,7 @@ And this one is also very wrong: because the code starts aaaaaaafter the column:
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
```markdown
This line is simply not toooooooooooooooooooooooooooooooooooooooooooo
@ -136,7 +244,7 @@ This is also fine: <http://this-long-url-with-a-long-domain.co.uk/a-long-path?qu
<a><b><i><p><q><s><u>alpha bravo charlie delta echo foxtrot golf</u></s></q></p></i></b></a>
The following is also fine, because there is no whitespace.
The following is also fine (note the `.`), because there is no whitespace.
<http://this-long-url-with-a-long-domain-is-ok.co.uk/a-long-path?query=variables>.
@ -149,59 +257,12 @@ In addition, definitions are also fine:
No messages.
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-maximum-line-length
```
This package exports no identifiers.
The default export is `remarkLintMaximumLineLength`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-maximum-line-length",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-maximum-line-length readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintMaximumLineLength from 'remark-lint-maximum-line-length'
remark()
.use(remarkLint)
+ .use(remarkLintMaximumLineLength)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -243,17 +304,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -4,6 +4,7 @@
* @license MIT
* @module no-auto-link-without-protocol
* @deprecated
* **Stability: Legacy**.
* This rule is no longer recommended for use.
* With CommonMark, all autolinks (except for emails) are required to have a
* protocol.

View File

@ -2,68 +2,17 @@
# remark-lint-no-auto-link-without-protocol
[![Build][build-badge]][build]
[![Coverage][coverage-badge]][coverage]
[![Downloads][downloads-badge]][downloads]
[![Size][size-badge]][size]
[![Sponsors][sponsors-badge]][collective]
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
**Stability: Legacy**.
This rule is no longer recommended for use.
With CommonMark, all autolinks (except for emails) are required to have a
protocol.
Otherwise they dont parse.
The previous suggestion to add a protocol to email autolinks was wrong.
## Contribute
See [`contributing.md`][contributing] in [`remarkjs/.github`][health] for ways
to get started.
See [`support.md`][support] for ways to get help.
This project has a [code of conduct][coc].
By interacting with this repository, organization, or community you agree to
abide by its terms.
## License
[MIT][license] © [Titus Wormer][author]
[build-badge]: https://github.com/remarkjs/remark-lint/workflows/main/badge.svg
[build]: https://github.com/remarkjs/remark-lint/actions
[coverage-badge]: https://img.shields.io/codecov/c/github/remarkjs/remark-lint.svg
[coverage]: https://codecov.io/github/remarkjs/remark-lint
[downloads-badge]: https://img.shields.io/npm/dm/remark-lint-no-auto-link-without-protocol.svg
[downloads]: https://www.npmjs.com/package/remark-lint-no-auto-link-without-protocol
[size-badge]: https://img.shields.io/bundlephobia/minzip/remark-lint-no-auto-link-without-protocol.svg
[size]: https://bundlephobia.com/result?p=remark-lint-no-auto-link-without-protocol
[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg
[backers-badge]: https://opencollective.com/unified/backers/badge.svg
[collective]: https://opencollective.com/unified
[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg
[chat]: https://github.com/remarkjs/remark/discussions
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license
[author]: https://wooorm.com

View File

@ -1,20 +1,28 @@
/**
* ## When should I use this?
*
* You can use this package to check that lines in block quotes start with `>`.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Rules around lazy lines are not straightforward and visually confusing,
* so its recommended to start each line with a `>`.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* adds `>` markers to every line in a block quote.
*
* @module no-blockquote-without-marker
* @summary
* remark-lint rule to warn when lines in block quotes start without `>`.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-blockquote-without-marker
* @fileoverview
* Warn when blank lines without `>` (greater than) markers are found in a
* block quote.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* adds markers to every line in a block quote.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,16 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when blank lines without `>` (greater than) markers are found in a
block quote.
[`remark-lint`][mono] rule to warn when lines in block quotes start without `>`.
## Fix
## Contents
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
adds markers to every line in a block quote.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoBlockquoteWithoutMarker[, config])`](#unifieduseremarklintnoblockquotewithoutmarker-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that lines in block quotes start with `>`.
## Presets
@ -30,7 +47,96 @@ This rule is included in the following presets:
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
| [`remark-preset-lint-recommended`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-recommended) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-blockquote-without-marker
```
In Deno with [Skypack][]:
```js
import remarkLintNoBlockquoteWithoutMarker from 'https://cdn.skypack.dev/remark-lint-no-blockquote-without-marker@5?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoBlockquoteWithoutMarker from 'https://cdn.skypack.dev/remark-lint-no-blockquote-without-marker@5?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoBlockquoteWithoutMarker from 'remark-lint-no-blockquote-without-marker'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoBlockquoteWithoutMarker)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-blockquote-without-marker example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-blockquote-without-marker",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoBlockquoteWithoutMarker`.
### `unified().use(remarkLintNoBlockquoteWithoutMarker[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
Rules around “lazy” lines are not straightforward and visually confusing,
so its recommended to start each line with a `>`.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
adds `>` markers to every line in a block quote.
## Examples
##### `ok.md`
@ -50,7 +156,7 @@ No messages.
###### In
Note: `»` represents a tab.
> 👉 **Note**: `»` represents a tab.
```markdown
>»Foo…
@ -82,7 +188,7 @@ No messages.
###### In
Note: `»` represents a tab.
> 👉 **Note**: `»` represents a tab.
```markdown
>»Foo…
@ -97,59 +203,12 @@ Note: `»` represents a tab.
3:1: Missing marker in block quote
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-blockquote-without-marker
```
This package exports no identifiers.
The default export is `remarkLintNoBlockquoteWithoutMarker`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-blockquote-without-marker",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-blockquote-without-marker readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoBlockquoteWithoutMarker from 'remark-lint-no-blockquote-without-marker'
remark()
.use(remarkLint)
+ .use(remarkLintNoBlockquoteWithoutMarker)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -191,17 +250,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,22 +1,29 @@
/**
* ## When should I use this?
*
* You can use this package to check that no more blank lines than needed
* are used between blocks.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* More than one blank line has no effect between blocks.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* adds exactly one blank line between any block.
*
* @module no-consecutive-blank-lines
* @summary
* remark-lint rule to warn when more blank lines that needed are used
* between blocks.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-consecutive-blank-lines
* @fileoverview
* Warn for too many consecutive blank lines.
* Knows about the extra line needed between a list and indented code, and two
* lists.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* always uses one blank line between blocks if possible, or two lines when
* needed.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,18 +10,35 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn for too many consecutive blank lines.
Knows about the extra line needed between a list and indented code, and two
lists.
[`remark-lint`][mono] rule to warn when more blank lines that needed are used
between blocks.
## Fix
## Contents
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
always uses one blank line between blocks if possible, or two lines when
needed.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoConsecutiveBlankLines[, config])`](#unifieduseremarklintnoconsecutiveblanklines-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that no more blank lines than needed
are used between blocks.
## Presets
@ -31,13 +48,101 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-consecutive-blank-lines
```
In Deno with [Skypack][]:
```js
import remarkLintNoConsecutiveBlankLines from 'https://cdn.skypack.dev/remark-lint-no-consecutive-blank-lines@4?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoConsecutiveBlankLines from 'https://cdn.skypack.dev/remark-lint-no-consecutive-blank-lines@4?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoConsecutiveBlankLines from 'remark-lint-no-consecutive-blank-lines'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoConsecutiveBlankLines)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-consecutive-blank-lines example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-consecutive-blank-lines",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoConsecutiveBlankLines`.
### `unified().use(remarkLintNoConsecutiveBlankLines[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
More than one blank line has no effect between blocks.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
adds exactly one blank line between any block.
## Examples
##### `ok.md`
###### In
Note: `␊` represents a line feed.
> 👉 **Note**: `␊` represents a line feed.
```markdown
Foo…
@ -59,7 +164,7 @@ No messages.
###### In
Note: `␊` represents a line feed.
> 👉 **Note**: `␊` represents a line feed.
```markdown
Foo…
@ -77,59 +182,12 @@ Foo…
4:5: Remove 2 lines after node
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-consecutive-blank-lines
```
This package exports no identifiers.
The default export is `remarkLintNoConsecutiveBlankLines`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-consecutive-blank-lines",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-consecutive-blank-lines readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoConsecutiveBlankLines from 'remark-lint-no-consecutive-blank-lines'
remark()
.use(remarkLint)
+ .use(remarkLintNoConsecutiveBlankLines)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -171,17 +229,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,23 @@
/**
* ## When should I use this?
*
* You can use this package to check that URLs are defined once.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Its likely a mistake when the same URL is defined with different
* identifiers.
*
* @module no-duplicate-defined-urls
* @summary
* remark-lint rule to warn when URLs are defined multiple times.
* @author Titus Wormer
* @copyright 2020 Titus Wormer
* @license MIT
* @module no-duplicate-defined-urls
* @fileoverview
* Warn when definitions define the same URL.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,13 +10,122 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when definitions define the same URL.
[`remark-lint`][mono] rule to warn when URLs are defined multiple times.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoDuplicateDefinedUrls[, config])`](#unifieduseremarklintnoduplicatedefinedurls-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that URLs are defined once.
## Presets
This rule is not included in any default preset
This rule is not included in a preset maintained here.
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-duplicate-defined-urls
```
In Deno with [Skypack][]:
```js
import remarkLintNoDuplicateDefinedUrls from 'https://cdn.skypack.dev/remark-lint-no-duplicate-defined-urls@2?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoDuplicateDefinedUrls from 'https://cdn.skypack.dev/remark-lint-no-duplicate-defined-urls@2?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoDuplicateDefinedUrls from 'remark-lint-no-duplicate-defined-urls'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoDuplicateDefinedUrls)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-duplicate-defined-urls example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-duplicate-defined-urls",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoDuplicateDefinedUrls`.
### `unified().use(remarkLintNoDuplicateDefinedUrls[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
Its likely a mistake when the same URL is defined with different
identifiers.
## Examples
##### `ok.md`
@ -46,59 +155,12 @@ No messages.
2:1-2:19: Do not use different definitions with the same URL (1:1)
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-duplicate-defined-urls
```
This package exports no identifiers.
The default export is `remarkLintNoDuplicateDefinedUrls`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-duplicate-defined-urls",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-duplicate-defined-urls readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoDuplicateDefinedUrls from 'remark-lint-no-duplicate-defined-urls'
remark()
.use(remarkLint)
+ .use(remarkLintNoDuplicateDefinedUrls)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -140,17 +202,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,22 @@
/**
* ## When should I use this?
*
* You can use this package to check that identifiers are defined once.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Its a mistake when the same identifier is defined multiple times.
*
* @module no-duplicate-definitions
* @summary
* remark-lint rule to warn when identifiers are defined multiple times.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-duplicate-definitions
* @fileoverview
* Warn when duplicate definitions are found.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,7 +10,32 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when duplicate definitions are found.
[`remark-lint`][mono] rule to warn when identifiers are defined multiple times.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoDuplicateDefinitions[, config])`](#unifieduseremarklintnoduplicatedefinitions-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that identifiers are defined once.
## Presets
@ -20,7 +45,90 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-recommended`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-recommended) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-duplicate-definitions
```
In Deno with [Skypack][]:
```js
import remarkLintNoDuplicateDefinitions from 'https://cdn.skypack.dev/remark-lint-no-duplicate-definitions@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoDuplicateDefinitions from 'https://cdn.skypack.dev/remark-lint-no-duplicate-definitions@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoDuplicateDefinitions from 'remark-lint-no-duplicate-definitions'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoDuplicateDefinitions)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-duplicate-definitions example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-duplicate-definitions",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoDuplicateDefinitions`.
### `unified().use(remarkLintNoDuplicateDefinitions[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
Its a mistake when the same identifier is defined multiple times.
## Examples
##### `ok.md`
@ -50,59 +158,12 @@ No messages.
2:1-2:11: Do not use definitions with the same identifier (1:1)
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-duplicate-definitions
```
This package exports no identifiers.
The default export is `remarkLintNoDuplicateDefinitions`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-duplicate-definitions",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-duplicate-definitions readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoDuplicateDefinitions from 'remark-lint-no-duplicate-definitions'
remark()
.use(remarkLint)
+ .use(remarkLintNoDuplicateDefinitions)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -144,17 +205,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,12 +1,25 @@
/**
* ## When should I use this?
*
* You can use this package to check that headings with the same text are
* used once per section.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Its likely a mistake that the same heading text is used in the same
* section.
*
* @module no-duplicate-headings-in-section
* @summary
* remark-lint rule to warn when headings with the same text are used
* multiple times per section.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-duplicate-headings-in-section
* @fileoverview
* Warn when duplicate headings are found, but only when on the same level,
* in the same section.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,14 +10,124 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when duplicate headings are found, but only when on the same level,
“in” the same section.
[`remark-lint`][mono] rule to warn when headings with the same text are used
multiple times per section.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoDuplicateHeadingsInSection[, config])`](#unifieduseremarklintnoduplicateheadingsinsection-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that headings with the same text are
used once per section.
## Presets
This rule is not included in any default preset
This rule is not included in a preset maintained here.
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-duplicate-headings-in-section
```
In Deno with [Skypack][]:
```js
import remarkLintNoDuplicateHeadingsInSection from 'https://cdn.skypack.dev/remark-lint-no-duplicate-headings-in-section@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoDuplicateHeadingsInSection from 'https://cdn.skypack.dev/remark-lint-no-duplicate-headings-in-section@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoDuplicateHeadingsInSection from 'remark-lint-no-duplicate-headings-in-section'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoDuplicateHeadingsInSection)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-duplicate-headings-in-section example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-duplicate-headings-in-section",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoDuplicateHeadingsInSection`.
### `unified().use(remarkLintNoDuplicateHeadingsInSection[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
Its likely a mistake that the same heading text is used in the same
section.
## Examples
##### `ok.md`
@ -85,59 +195,12 @@ No messages.
7:1-7:11: Do not use headings with similar content per section (3:1)
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-duplicate-headings-in-section
```
This package exports no identifiers.
The default export is `remarkLintNoDuplicateHeadingsInSection`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-duplicate-headings-in-section",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-duplicate-headings-in-section readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoDuplicateHeadingsInSection from 'remark-lint-no-duplicate-headings-in-section'
remark()
.use(remarkLint)
+ .use(remarkLintNoDuplicateHeadingsInSection)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -179,17 +242,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,29 @@
/**
* ## When should I use this?
*
* You can use this package to check that headings with the same text are
* used once.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Headings having unique text helps screen reader users (who typically use
* jump to heading features to navigate within a page, which reads headings
* out loud).
* It also helps because often headings receive automatic unique IDs, and when
* the same heading text is used, they are suffixed with a number based on where
* they are positioned in the document, which makes linking to them prone to
* changes.
*
* @module no-duplicate-headings
* @summary
* remark-lint rule to warn when headings with the same text are found.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-duplicate-headings
* @fileoverview
* Warn when duplicate headings are found.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,7 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when duplicate headings are found.
[`remark-lint`][mono] rule to warn when headings with the same text are found.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoDuplicateHeadings[, config])`](#unifieduseremarklintnoduplicateheadings-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that headings with the same text are
used once.
## Presets
@ -20,7 +46,96 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-duplicate-headings
```
In Deno with [Skypack][]:
```js
import remarkLintNoDuplicateHeadings from 'https://cdn.skypack.dev/remark-lint-no-duplicate-headings@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoDuplicateHeadings from 'https://cdn.skypack.dev/remark-lint-no-duplicate-headings@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoDuplicateHeadings from 'remark-lint-no-duplicate-headings'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoDuplicateHeadings)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-duplicate-headings example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-duplicate-headings",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoDuplicateHeadings`.
### `unified().use(remarkLintNoDuplicateHeadings[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
Headings having unique text helps screen reader users (who typically use
“jump to heading” features to navigate within a page, which reads headings
out loud).
It also helps because often headings receive automatic unique IDs, and when
the same heading text is used, they are suffixed with a number based on where
they are positioned in the document, which makes linking to them prone to
changes.
## Examples
##### `ok.md`
@ -55,59 +170,12 @@ No messages.
5:1-5:29: Do not use headings with similar content (3:1)
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-duplicate-headings
```
This package exports no identifiers.
The default export is `remarkLintNoDuplicateHeadings`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-duplicate-headings",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-duplicate-headings readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoDuplicateHeadings from 'remark-lint-no-duplicate-headings'
remark()
.use(remarkLint)
+ .use(remarkLintNoDuplicateHeadings)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -149,17 +217,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,12 +1,26 @@
/**
* ## When should I use this?
*
* You can use this package to check that headings are used to introduce
* paragraphs instead of fake headings made with emphasis or strong.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* While not always the case, typically emphasis or strong around the text
* in a paragraph is used as a faux heading.
* Its recommended to use actual headings instead.
*
* @module no-emphasis-as-heading
* @summary
* remark-lint rule to warn when emphasis or strong are used to introduce
* a paragraph.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-emphasis-as-heading
* @fileoverview
* Warn when emphasis (including strong), instead of a heading, introduces
* a paragraph.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,9 +10,35 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when emphasis (including strong), instead of a heading, introduces
[`remark-lint`][mono] rule to warn when emphasis or strong are used to introduce
a paragraph.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoEmphasisAsHeading[, config])`](#unifieduseremarklintnoemphasisasheading-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that headings are used to introduce
paragraphs instead of “fake” headings made with emphasis or strong.
## Presets
This rule is included in the following presets:
@ -21,7 +47,92 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-emphasis-as-heading
```
In Deno with [Skypack][]:
```js
import remarkLintNoEmphasisAsHeading from 'https://cdn.skypack.dev/remark-lint-no-emphasis-as-heading@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoEmphasisAsHeading from 'https://cdn.skypack.dev/remark-lint-no-emphasis-as-heading@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoEmphasisAsHeading from 'remark-lint-no-emphasis-as-heading'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoEmphasisAsHeading)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-emphasis-as-heading example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-emphasis-as-heading",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoEmphasisAsHeading`.
### `unified().use(remarkLintNoEmphasisAsHeading[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
While not always the case, typically emphasis or strong around the text
in a paragraph is used as a “faux” heading.
Its recommended to use actual headings instead.
## Examples
##### `ok.md`
@ -58,59 +169,12 @@ Quux.
5:1-5:8: Dont use emphasis to introduce a section, use a heading
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-emphasis-as-heading
```
This package exports no identifiers.
The default export is `remarkLintNoEmphasisAsHeading`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-emphasis-as-heading",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-emphasis-as-heading readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoEmphasisAsHeading from 'remark-lint-no-emphasis-as-heading'
remark()
.use(remarkLint)
+ .use(remarkLintNoEmphasisAsHeading)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -152,17 +216,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,24 @@
/**
* ## When should I use this?
*
* You can use this package to check that links and images have URLs.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* While it is possible to omit URLs in links and images, that typically
* indicates a placeholder or todo that has to be filled out later.
* Its recommended to fill them out.
*
* @module no-empty-url
* @summary
* remark-lint rule to warn for empty URLs in links and images.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-empty-url
* @fileoverview
* Warn for empty URLs in links and images.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,13 +10,123 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn for empty URLs in links and images.
[`remark-lint`][mono] rule to warn for empty URLs in links and images.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoEmptyUrl[, config])`](#unifieduseremarklintnoemptyurl-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that links and images have URLs.
## Presets
This rule is not included in any default preset
This rule is not included in a preset maintained here.
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-empty-url
```
In Deno with [Skypack][]:
```js
import remarkLintNoEmptyUrl from 'https://cdn.skypack.dev/remark-lint-no-empty-url@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoEmptyUrl from 'https://cdn.skypack.dev/remark-lint-no-empty-url@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoEmptyUrl from 'remark-lint-no-empty-url'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoEmptyUrl)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-empty-url example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-empty-url",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoEmptyUrl`.
### `unified().use(remarkLintNoEmptyUrl[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
While it is possible to omit URLs in links and images, that typically
indicates a “placeholder” or todo that has to be filled out later.
Its recommended to fill them out.
## Examples
##### `ok.md`
@ -49,59 +159,12 @@ No messages.
3:1-3:11: Dont use images without URL
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-empty-url
```
This package exports no identifiers.
The default export is `remarkLintNoEmptyUrl`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-empty-url",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-empty-url readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoEmptyUrl from 'remark-lint-no-empty-url'
remark()
.use(remarkLint)
+ .use(remarkLintNoEmptyUrl)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -143,17 +206,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,19 @@
/**
* ## When should I use this?
*
* You can use this package to check that file names do not start with
* articles (`a`, `the`, etc).
*
* ## API
*
* There are no options.
*
* @module no-file-name-articles
* @summary
* remark-lint rule to warn when file names start with articles.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-file-name-articles
* @fileoverview
* Warn when file names start with an article.
*
* @example
* {"name": "title.md"}
*

View File

@ -10,7 +10,32 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when file names start with an article.
[`remark-lint`][mono] rule to warn when file names start with articles.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoFileNameArticles[, config])`](#unifieduseremarklintnofilenamearticles-config)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that file names do not start with
articles (`a`, `the`, etc).
## Presets
@ -20,7 +45,86 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-file-name-articles
```
In Deno with [Skypack][]:
```js
import remarkLintNoFileNameArticles from 'https://cdn.skypack.dev/remark-lint-no-file-name-articles@2?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoFileNameArticles from 'https://cdn.skypack.dev/remark-lint-no-file-name-articles@2?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoFileNameArticles from 'remark-lint-no-file-name-articles'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoFileNameArticles)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-file-name-articles example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-file-name-articles",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoFileNameArticles`.
### `unified().use(remarkLintNoFileNameArticles[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Examples
##### `title.md`
@ -60,59 +164,12 @@ No messages.
1:1: Do not start file names with `an`
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-file-name-articles
```
This package exports no identifiers.
The default export is `remarkLintNoFileNameArticles`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-file-name-articles",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-file-name-articles readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoFileNameArticles from 'remark-lint-no-file-name-articles'
remark()
.use(remarkLint)
+ .use(remarkLintNoFileNameArticles)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -154,17 +211,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,19 @@
/**
* ## When should I use this?
*
* You can use this package to check that no consecutive dashes appear in
* file names.
*
* ## API
*
* There are no options.
*
* @module no-file-name-consecutive-dashes
* @summary
* remark-lint rule to warn when consecutive dashes appear in file names.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-file-name-consecutive-dashes
* @fileoverview
* Warn when file names contain consecutive dashes.
*
* @example
* {"name": "plug-ins.md"}
*

View File

@ -10,7 +10,32 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when file names contain consecutive dashes.
[`remark-lint`][mono] rule to warn when consecutive dashes appear in file names.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoFileNameConsecutiveDashes[, config])`](#unifieduseremarklintnofilenameconsecutivedashes-config)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that no consecutive dashes appear in
file names.
## Presets
@ -20,7 +45,86 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-file-name-consecutive-dashes
```
In Deno with [Skypack][]:
```js
import remarkLintNoFileNameConsecutiveDashes from 'https://cdn.skypack.dev/remark-lint-no-file-name-consecutive-dashes@2?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoFileNameConsecutiveDashes from 'https://cdn.skypack.dev/remark-lint-no-file-name-consecutive-dashes@2?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoFileNameConsecutiveDashes from 'remark-lint-no-file-name-consecutive-dashes'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoFileNameConsecutiveDashes)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-file-name-consecutive-dashes example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-file-name-consecutive-dashes",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoFileNameConsecutiveDashes`.
### `unified().use(remarkLintNoFileNameConsecutiveDashes[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Examples
##### `plug-ins.md`
@ -36,59 +140,12 @@ No messages.
1:1: Do not use consecutive dashes in a file name
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-file-name-consecutive-dashes
```
This package exports no identifiers.
The default export is `remarkLintNoFileNameConsecutiveDashes`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-file-name-consecutive-dashes",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-file-name-consecutive-dashes readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoFileNameConsecutiveDashes from 'remark-lint-no-file-name-consecutive-dashes'
remark()
.use(remarkLint)
+ .use(remarkLintNoFileNameConsecutiveDashes)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -130,17 +187,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,20 +1,24 @@
/**
* ## When should I use this?
*
* You can use this package to check that file names contain regular characters.
*
* ## API
*
* The following options (default: `'\\.a-zA-Z0-9-'`) are accepted:
*
* * `string` (example `'\w\\.'`)
* allowed characters, wrapped in `new RegExp('[^' + x + ']')`, make sure
* to double escape regexp characters
* * `RegExp` (example `/[^\.a-zA-Z0-9-]/`)
* disallowed pattern
*
* @module no-file-name-irregular-characters
* @summary
* remark-lint rule to warn when file names contain irregular characters.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-file-name-irregular-characters
* @fileoverview
* Warn when file names contain irregular characters: characters other than
* alphanumericals (`a-zA-Z0-9`), hyphen-minus (`-`), and dots (`.`, full
* stops).
*
* Options: `RegExp` or `string`, default: `'\\.a-zA-Z0-9-'`.
*
* If a string is given, it will be wrapped in
* `new RegExp('[^' + preferred + ']')`.
*
* Any match by the wrapped or given expressions creates a message.
*
* @example
* {"name": "plug-ins.md"}
*

View File

@ -10,16 +10,31 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when file names contain irregular characters: characters other than
alphanumericals (`a-zA-Z0-9`), hyphen-minus (`-`), and dots (`.`, full
stops).
[`remark-lint`][mono] rule to warn when file names contain irregular characters.
Options: `RegExp` or `string`, default: `'\\.a-zA-Z0-9-'`.
## Contents
If a string is given, it will be wrapped in
`new RegExp('[^' + preferred + ']')`.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoFileNameIrregularCharacters[, config])`](#unifieduseremarklintnofilenameirregularcharacters-config)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
Any match by the wrapped or given expressions creates a message.
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that file names contain regular characters.
## Presets
@ -29,7 +44,92 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-file-name-irregular-characters
```
In Deno with [Skypack][]:
```js
import remarkLintNoFileNameIrregularCharacters from 'https://cdn.skypack.dev/remark-lint-no-file-name-irregular-characters@2?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoFileNameIrregularCharacters from 'https://cdn.skypack.dev/remark-lint-no-file-name-irregular-characters@2?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoFileNameIrregularCharacters from 'remark-lint-no-file-name-irregular-characters'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoFileNameIrregularCharacters)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-file-name-irregular-characters example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-file-name-irregular-characters",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoFileNameIrregularCharacters`.
### `unified().use(remarkLintNoFileNameIrregularCharacters[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'\\.a-zA-Z0-9-'`) are accepted:
* `string` (example `'\w\\.'`)
— allowed characters, wrapped in `new RegExp('[^' + x + ']')`, make sure
to double escape regexp characters
* `RegExp` (example `/[^\.a-zA-Z0-9-]/`)
— disallowed pattern
## Examples
##### `plug-ins.md`
@ -69,59 +169,12 @@ When configured with `'\\.a-z0-9'`.
1:1: Do not use `R` in a file name
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-file-name-irregular-characters
```
This package exports no identifiers.
The default export is `remarkLintNoFileNameIrregularCharacters`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-file-name-irregular-characters",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-file-name-irregular-characters readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoFileNameIrregularCharacters from 'remark-lint-no-file-name-irregular-characters'
remark()
.use(remarkLint)
+ .use(remarkLintNoFileNameIrregularCharacters)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -163,17 +216,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,19 @@
/**
* ## When should I use this?
*
* You can use this package to check that file name casing is consistent
* (either lowercase or uppercase).
*
* ## API
*
* There are no options.
*
* @module no-file-name-mixed-case
* @summary
* remark-lint rule to warn when file name casing is inconsistent.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-file-name-mixed-case
* @fileoverview
* Warn when file names use mixed case: both upper- and lowercase characters.
*
* @example
* {"name": "README.md"}
*

View File

@ -10,7 +10,32 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when file names use mixed case: both upper- and lowercase characters.
[`remark-lint`][mono] rule to warn when file name casing is inconsistent.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoFileNameMixedCase[, config])`](#unifieduseremarklintnofilenamemixedcase-config)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that file name casing is consistent
(either lowercase or uppercase).
## Presets
@ -20,7 +45,86 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-file-name-mixed-case
```
In Deno with [Skypack][]:
```js
import remarkLintNoFileNameMixedCase from 'https://cdn.skypack.dev/remark-lint-no-file-name-mixed-case@2?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoFileNameMixedCase from 'https://cdn.skypack.dev/remark-lint-no-file-name-mixed-case@2?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoFileNameMixedCase from 'remark-lint-no-file-name-mixed-case'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoFileNameMixedCase)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-file-name-mixed-case example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-file-name-mixed-case",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoFileNameMixedCase`.
### `unified().use(remarkLintNoFileNameMixedCase[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Examples
##### `README.md`
@ -42,59 +146,12 @@ No messages.
1:1: Do not mix casing in file names
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-file-name-mixed-case
```
This package exports no identifiers.
The default export is `remarkLintNoFileNameMixedCase`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-file-name-mixed-case",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-file-name-mixed-case readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoFileNameMixedCase from 'remark-lint-no-file-name-mixed-case'
remark()
.use(remarkLint)
+ .use(remarkLintNoFileNameMixedCase)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -136,17 +193,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,19 @@
/**
* ## When should I use this?
*
* You can use this package to check that no initial or final dashes appear in
* file names.
*
* ## API
*
* There are no options.
*
* @module no-file-name-outer-dashes
* @summary
* remark-lint rule to warn when initial or final dashes appear in file names.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-file-name-outer-dashes
* @fileoverview
* Warn when file names contain initial or final dashes (hyphen-minus, `-`).
*
* @example
* {"name": "readme.md"}
*

View File

@ -10,7 +10,32 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when file names contain initial or final dashes (hyphen-minus, `-`).
[`remark-lint`][mono] rule to warn when initial or final dashes appear in file names.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoFileNameOuterDashes[, config])`](#unifieduseremarklintnofilenameouterdashes-config)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that no initial or final dashes appear in
file names.
## Presets
@ -20,7 +45,86 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-file-name-outer-dashes
```
In Deno with [Skypack][]:
```js
import remarkLintNoFileNameOuterDashes from 'https://cdn.skypack.dev/remark-lint-no-file-name-outer-dashes@2?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoFileNameOuterDashes from 'https://cdn.skypack.dev/remark-lint-no-file-name-outer-dashes@2?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoFileNameOuterDashes from 'remark-lint-no-file-name-outer-dashes'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoFileNameOuterDashes)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-file-name-outer-dashes example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-file-name-outer-dashes",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoFileNameOuterDashes`.
### `unified().use(remarkLintNoFileNameOuterDashes[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Examples
##### `readme.md`
@ -44,59 +148,12 @@ No messages.
1:1: Do not use initial or final dashes in a file name
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-file-name-outer-dashes
```
This package exports no identifiers.
The default export is `remarkLintNoFileNameOuterDashes`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-file-name-outer-dashes",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-file-name-outer-dashes readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoFileNameOuterDashes from 'remark-lint-no-file-name-outer-dashes'
remark()
.use(remarkLint)
+ .use(remarkLintNoFileNameOuterDashes)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -138,17 +195,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,19 +1,30 @@
/**
* ## When should I use this?
*
* You can use this package to check that there is on space between `#`
* characters and the content in headings.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* One space is required and more than one space has no effect.
* Due to this, its recommended to turn this rule on.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats headings with exactly one space.
*
* @module no-heading-content-indent
* @summary
* remark-lint rule to warn when there are too many spaces between
* hashes and content in headings.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-heading-content-indent
* @fileoverview
* Warn when content of headings is indented.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* removes all unneeded padding around content in headings.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,15 +10,35 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when content of headings is indented.
[`remark-lint`][mono] rule to warn when there are too many spaces between
hashes and content in headings.
## Fix
## Contents
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
removes all unneeded padding around content in headings.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoHeadingContentIndent[, config])`](#unifieduseremarklintnoheadingcontentindent-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that there is on space between `#`
characters and the content in headings.
## Presets
@ -28,13 +48,102 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-recommended`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-recommended) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-heading-content-indent
```
In Deno with [Skypack][]:
```js
import remarkLintNoHeadingContentIndent from 'https://cdn.skypack.dev/remark-lint-no-heading-content-indent@4?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoHeadingContentIndent from 'https://cdn.skypack.dev/remark-lint-no-heading-content-indent@4?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoHeadingContentIndent from 'remark-lint-no-heading-content-indent'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoHeadingContentIndent)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-heading-content-indent example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-heading-content-indent",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoHeadingContentIndent`.
### `unified().use(remarkLintNoHeadingContentIndent[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
One space is required and more than one space has no effect.
Due to this, its recommended to turn this rule on.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats headings with exactly one space.
## Examples
##### `ok.md`
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
#·Foo
@ -57,7 +166,7 @@ No messages.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
#··Foo
@ -79,7 +188,7 @@ Note: `·` represents a space.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
#··
@ -89,59 +198,12 @@ Note: `·` represents a space.
No messages.
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-heading-content-indent
```
This package exports no identifiers.
The default export is `remarkLintNoHeadingContentIndent`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-heading-content-indent",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-heading-content-indent readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoHeadingContentIndent from 'remark-lint-no-heading-content-indent'
remark()
.use(remarkLint)
+ .use(remarkLintNoHeadingContentIndent)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -183,17 +245,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,19 +1,40 @@
/**
* ## When should I use this?
*
* You can use this package to check that headings are not indented.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* There is no specific handling of indented headings (or anything else) in
* markdown.
* While it is possible to use an indent to headings on their text:
*
* ```markdown
* # One
* ## Two
* ### Three
* #### Four
* ```
*
* such style is uncommon, a bit hard to maintain, and its impossible to add a
* heading with a rank of 5 as it would form indented code instead.
* Hence, its recommended to not indent headings and to turn this rule on.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* formats all headings without indent.
*
* @module no-heading-indent
* @summary
* remark-lint rule to warn when headings are indented.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-heading-indent
* @fileoverview
* Warn when a heading is indented.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* removes all unneeded indentation before headings.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,27 +10,146 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when a heading is indented.
[`remark-lint`][mono] rule to warn when headings are indented.
## Fix
## Contents
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
removes all unneeded indentation before headings.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoHeadingIndent[, config])`](#unifieduseremarklintnoheadingindent-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that headings are not indented.
## Presets
This rule is not included in any default preset
This rule is not included in a preset maintained here.
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-heading-indent
```
In Deno with [Skypack][]:
```js
import remarkLintNoHeadingIndent from 'https://cdn.skypack.dev/remark-lint-no-heading-indent@4?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoHeadingIndent from 'https://cdn.skypack.dev/remark-lint-no-heading-indent@4?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoHeadingIndent from 'remark-lint-no-heading-indent'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoHeadingIndent)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-heading-indent example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-heading-indent",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoHeadingIndent`.
### `unified().use(remarkLintNoHeadingIndent[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
There is no specific handling of indented headings (or anything else) in
markdown.
While it is possible to use an indent to headings on their text:
```markdown
# One
## Two
### Three
#### Four
```
…such style is uncommon, a bit hard to maintain, and its impossible to add a
heading with a rank of 5 as it would form indented code instead.
Hence, its recommended to not indent headings and to turn this rule on.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
formats all headings without indent.
## Examples
##### `ok.md`
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
#·Hello world
@ -52,7 +171,7 @@ No messages.
###### In
Note: `·` represents a space.
> 👉 **Note**: `·` represents a space.
```markdown
···# Hello world
@ -75,59 +194,12 @@ Note: `·` represents a space.
8:4: Remove 3 spaces before this heading
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-heading-indent
```
This package exports no identifiers.
The default export is `remarkLintNoHeadingIndent`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-heading-indent",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-heading-indent readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoHeadingIndent from 'remark-lint-no-heading-indent'
remark()
.use(remarkLint)
+ .use(remarkLintNoHeadingIndent)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -169,17 +241,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,20 @@
/**
* ## When should I use this?
*
* You can use this package to ensure that no heading-like constructs are
* created, which instead will result in paragraphs with the `#` characters
* shown.
*
* ## API
*
* There are no options.
*
* @module no-heading-like-paragraph
* @summary
* remark-lint rule to warn when h7+ headings are used.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-heading-like-paragraph
* @fileoverview
* Warn for h7+ headings.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,13 +10,118 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn for h7+ “headings”.
[`remark-lint`][mono] rule to warn when h7+ “headings” are used.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoHeadingLikeParagraph[, config])`](#unifieduseremarklintnoheadinglikeparagraph-config)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to ensure that no heading-like constructs are
created, which instead will result in paragraphs with the `#` characters
shown.
## Presets
This rule is not included in any default preset
This rule is not included in a preset maintained here.
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-heading-like-paragraph
```
In Deno with [Skypack][]:
```js
import remarkLintNoHeadingLikeParagraph from 'https://cdn.skypack.dev/remark-lint-no-heading-like-paragraph@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoHeadingLikeParagraph from 'https://cdn.skypack.dev/remark-lint-no-heading-like-paragraph@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoHeadingLikeParagraph from 'remark-lint-no-heading-like-paragraph'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoHeadingLikeParagraph)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-heading-like-paragraph example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-heading-like-paragraph",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoHeadingLikeParagraph`.
### `unified().use(remarkLintNoHeadingLikeParagraph[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Examples
##### `ok.md`
@ -48,59 +153,12 @@ Delta.
1:1-1:16: This looks like a heading but has too many hashes
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-heading-like-paragraph
```
This package exports no identifiers.
The default export is `remarkLintNoHeadingLikeParagraph`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-heading-like-paragraph",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-heading-like-paragraph readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoHeadingLikeParagraph from 'remark-lint-no-heading-like-paragraph'
remark()
.use(remarkLint)
+ .use(remarkLintNoHeadingLikeParagraph)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -142,17 +200,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,16 +1,24 @@
/**
* ## When should I use this?
*
* You can use this package to check that headings dont end in punctuation.
*
* ## API
*
* The following options (default: `'\\.,;:!?'`) are accepted:
*
* * `string` (example `'\\.,;:'`)
* disallowed characters, wrapped in `new RegExp('[' + x + ']')`, make sure
* to double escape regexp characters
* * `RegExp` (example `/\p{P}/u`)
* disallowed pattern
*
* @module no-heading-punctuation
* @summary
* remark-lint rule to warn headings end in certain punctuation.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-heading-punctuation
* @fileoverview
* Warn when a heading ends with a group of characters.
*
* Options: `string`, default: `'.,;:!?'`.
*
* Note: these are added to a regex, in a group (`'[' + char + ']'`), be
* careful to escape the string correctly.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,12 +10,31 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when a heading ends with a group of characters.
[`remark-lint`][mono] rule to warn headings end in certain punctuation.
Options: `string`, default: `'.,;:!?'`.
## Contents
Note: these are added to a regex, in a group (`'[' + char + ']'`), be
careful to escape the string correctly.
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoHeadingPunctuation[, config])`](#unifieduseremarklintnoheadingpunctuation-config)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that headings dont end in punctuation.
## Presets
@ -25,7 +44,92 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | `':.'` |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-heading-punctuation
```
In Deno with [Skypack][]:
```js
import remarkLintNoHeadingPunctuation from 'https://cdn.skypack.dev/remark-lint-no-heading-punctuation@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoHeadingPunctuation from 'https://cdn.skypack.dev/remark-lint-no-heading-punctuation@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoHeadingPunctuation from 'remark-lint-no-heading-punctuation'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoHeadingPunctuation)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-heading-punctuation example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-heading-punctuation",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoHeadingPunctuation`.
### `unified().use(remarkLintNoHeadingPunctuation[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `'\\.,;:!?'`) are accepted:
* `string` (example `'\\.,;:'`)
— disallowed characters, wrapped in `new RegExp('[' + x + ']')`, make sure
to double escape regexp characters
* `RegExp` (example `/\p{P}/u`)
— disallowed pattern
## Examples
##### `ok.md`
@ -79,59 +183,12 @@ When configured with `',;:!?'`.
No messages.
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-heading-punctuation
```
This package exports no identifiers.
The default export is `remarkLintNoHeadingPunctuation`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-heading-punctuation",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-heading-punctuation readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoHeadingPunctuation from 'remark-lint-no-heading-punctuation'
remark()
.use(remarkLint)
+ .use(remarkLintNoHeadingPunctuation)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -173,17 +230,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,13 +1,18 @@
/**
* ## When should I use this?
*
* You can use this package to check that no HTML (other than comments) is used.
*
* ## API
*
* There are no options.
*
* @module no-html
* @summary
* remark-lint rule to warn when HTML is used.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-html
* @fileoverview
* Warn when HTML nodes are used.
*
* Ignores comments, because they are used by `remark`, `remark-lint`, other
* Markdown tools, and because Markdown doesnt have native comments.
*
* @example
* {"name": "ok.md"}

View File

@ -10,16 +10,116 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when HTML nodes are used.
[`remark-lint`][mono] rule to warn when HTML is used.
Ignores comments, because they are used by `remark`, `remark-lint`, other
Markdown tools, and because Markdown doesnt have native comments.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoHtml[, config])`](#unifieduseremarklintnohtml-config)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that no HTML (other than comments) is used.
## Presets
This rule is not included in any default preset
This rule is not included in a preset maintained here.
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-html
```
In Deno with [Skypack][]:
```js
import remarkLintNoHtml from 'https://cdn.skypack.dev/remark-lint-no-html@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoHtml from 'https://cdn.skypack.dev/remark-lint-no-html@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoHtml from 'remark-lint-no-html'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoHtml)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-html example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-html",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoHtml`.
### `unified().use(remarkLintNoHtml[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Examples
##### `ok.md`
@ -49,59 +149,12 @@ No messages.
1:1-1:15: Do not use HTML in markdown
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-html
```
This package exports no identifiers.
The default export is `remarkLintNoHtml`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-html",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-html readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoHtml from 'remark-lint-no-html'
remark()
.use(remarkLint)
+ .use(remarkLintNoHtml)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -143,17 +196,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,14 +1,21 @@
/**
* ## When should I use this?
*
* You can use this package to check that inline constructs (links) are
* not padded.
* Historically, it was possible to pad emphasis, strong, and strikethrough
* too, but this was removed in CommonMark, making this rule much less useful.
*
* ## API
*
* There are no options.
*
* @module no-inline-padding
* @summary
* remark-lint rule to warn when inline constructs are padded.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-inline-padding
* @fileoverview
* Warn when phrasing content is padded with spaces between their markers and
* content.
*
* Warns for emphasis, strong, delete, image, and link.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,10 +10,34 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when phrasing content is padded with spaces between their markers and
content.
[`remark-lint`][mono] rule to warn when inline constructs are padded.
Warns for emphasis, strong, delete, image, and link.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoInlinePadding[, config])`](#unifieduseremarklintnoinlinepadding-config)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that inline constructs (links) are
not padded.
Historically, it was possible to pad emphasis, strong, and strikethrough
too, but this was removed in CommonMark, making this rule much less useful.
## Presets
@ -24,7 +48,86 @@ This rule is included in the following presets:
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
| [`remark-preset-lint-recommended`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-recommended) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-inline-padding
```
In Deno with [Skypack][]:
```js
import remarkLintNoInlinePadding from 'https://cdn.skypack.dev/remark-lint-no-inline-padding@4?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoInlinePadding from 'https://cdn.skypack.dev/remark-lint-no-inline-padding@4?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoInlinePadding from 'remark-lint-no-inline-padding'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoInlinePadding)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-inline-padding example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-inline-padding",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoInlinePadding`.
### `unified().use(remarkLintNoInlinePadding[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Examples
##### `ok.md`
@ -52,59 +155,12 @@ Alpha [ bravo ](http://echo.fox/trot)
1:7-1:38: Dont pad `link` with inner spaces
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-inline-padding
```
This package exports no identifiers.
The default export is `remarkLintNoInlinePadding`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-inline-padding",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-inline-padding readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoInlinePadding from 'remark-lint-no-inline-padding'
remark()
.use(remarkLint)
+ .use(remarkLintNoInlinePadding)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -146,17 +202,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,23 +1,30 @@
/**
* ## When should I use this?
*
* You can use this package to check that autolink literal URLs are not used.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Autolink literal URLs (just a URL) are a feature enabled by GFM.
* They dont work everywhere.
* Due to this, its recommended to instead use normal autolinks
* (`<https://url>`) or links (`[text](url)`).
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* never creates autolink literals and always uses normal autolinks (`<url>`).
*
* @module no-literal-urls
* @summary
* remark-lint rule to warn for autolink literals.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-literal-urls
* @fileoverview
* Warn for literal URLs in text.
* URLs are treated as links in some Markdown vendors, but not in others.
* To make sure they are always linked, wrap them in `<` (less than) and `>`
* (greater than).
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* never creates literal URLs and always uses `<` (less than) and `>`
* (greater than).
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,19 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn for literal URLs in text.
URLs are treated as links in some Markdown vendors, but not in others.
To make sure they are always linked, wrap them in `<` (less than) and `>`
(greater than).
[`remark-lint`][mono] rule to warn for autolink literals.
## Fix
## Contents
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
never creates literal URLs and always uses `<` (less than) and `>`
(greater than).
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoLiteralUrls[, config])`](#unifieduseremarklintnoliteralurls-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that autolink literal URLs are not used.
## Presets
@ -33,7 +47,98 @@ This rule is included in the following presets:
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
| [`remark-preset-lint-recommended`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-recommended) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-literal-urls
```
In Deno with [Skypack][]:
```js
import remarkLintNoLiteralUrls from 'https://cdn.skypack.dev/remark-lint-no-literal-urls@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoLiteralUrls from 'https://cdn.skypack.dev/remark-lint-no-literal-urls@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoLiteralUrls from 'remark-lint-no-literal-urls'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoLiteralUrls)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-literal-urls example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-literal-urls",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoLiteralUrls`.
### `unified().use(remarkLintNoLiteralUrls[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
There are no options.
## Recommendation
Autolink literal URLs (just a URL) are a feature enabled by GFM.
They dont work everywhere.
Due to this, its recommended to instead use normal autolinks
(`<https://url>`) or links (`[text](url)`).
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
never creates autolink literals and always uses normal autolinks (`<url>`).
## Examples
##### `ok.md`
@ -51,7 +156,7 @@ No messages.
###### In
Note: this example uses [GFM][].
> 👉 **Note**: this example uses GFM ([`remark-gfm`][gfm]).
```markdown
http://foo.bar/baz
@ -63,59 +168,12 @@ http://foo.bar/baz
1:1-1:19: Dont use literal URLs without angle brackets
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-literal-urls
```
This package exports no identifiers.
The default export is `remarkLintNoLiteralUrls`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-literal-urls",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-literal-urls readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoLiteralUrls from 'remark-lint-no-literal-urls'
remark()
.use(remarkLint)
+ .use(remarkLintNoLiteralUrls)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -157,17 +215,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,26 +1,34 @@
/**
* ## When should I use this?
*
* You can use this package to check that blank lines are used between blocks.
*
* ## API
*
* The following options (default: `undefined`) are accepted:
*
* * `Object` with the following fields:
* * `exceptTightLists` (`boolean`, default: `false`)
* allow tight list items
*
* ## Recommendation
*
* While not always required, blank lines are required in certain, sometimes
* confusing, cases.
* Due to this, its recommended to always use blank lines between blocks.
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
* always uses blank lines between blocks.
* It has a `join` function to customize such behavior.
*
* @module no-missing-blank-lines
* @summary
* remark-lint rule to warn when blank lines are missing.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-missing-blank-lines
* @fileoverview
* Warn when missing blank lines before block content (and frontmatter
* content).
*
* This rule can be configured to allow tight list items without blank lines
* between their contents by passing `{exceptTightLists: true}` (default:
* `false`).
*
* ## Fix
*
* [`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
* always uses one blank line between blocks if possible, or two lines when
* needed.
* The style of the list items persists.
*
* See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
* on how to automatically fix warnings for this rule.
*
* @example
* {"name": "ok.md"}
*

View File

@ -10,28 +10,134 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when missing blank lines before block content (and frontmatter
content).
[`remark-lint`][mono] rule to warn when blank lines are missing.
This rule can be configured to allow tight list items without blank lines
between their contents by passing `{exceptTightLists: true}` (default:
`false`).
## Contents
## Fix
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoMissingBlankLines[, config])`](#unifieduseremarklintnomissingblanklines-config)
* [Recommendation](#recommendation)
* [Fix](#fix)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
[`remark-stringify`](https://github.com/remarkjs/remark/tree/HEAD/packages/remark-stringify)
always uses one blank line between blocks if possible, or two lines when
needed.
The style of the list items persists.
## What is this?
See [Using remark to fix your Markdown](https://github.com/remarkjs/remark-lint#using-remark-to-fix-your-markdown)
on how to automatically fix warnings for this rule.
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that blank lines are used between blocks.
## Presets
This rule is not included in any default preset
This rule is not included in a preset maintained here.
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-missing-blank-lines
```
In Deno with [Skypack][]:
```js
import remarkLintNoMissingBlankLines from 'https://cdn.skypack.dev/remark-lint-no-missing-blank-lines@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoMissingBlankLines from 'https://cdn.skypack.dev/remark-lint-no-missing-blank-lines@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoMissingBlankLines from 'remark-lint-no-missing-blank-lines'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoMissingBlankLines)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-missing-blank-lines example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-missing-blank-lines",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoMissingBlankLines`.
### `unified().use(remarkLintNoMissingBlankLines[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `undefined`) are accepted:
* `Object` with the following fields:
* `exceptTightLists` (`boolean`, default: `false`)
— allow tight list items
## Recommendation
While not always required, blank lines are required in certain, sometimes
confusing, cases.
Due to this, its recommended to always use blank lines between blocks.
## Fix
[`remark-stringify`](https://github.com/remarkjs/remark/tree/main/packages/remark-stringify)
always uses blank lines between blocks.
It has a `join` function to customize such behavior.
## Examples
##### `ok.md`
@ -96,59 +202,12 @@ Paragraph.
2:1-2:7: Missing blank line before block node
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-missing-blank-lines
```
This package exports no identifiers.
The default export is `remarkLintNoMissingBlankLines`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-missing-blank-lines",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-missing-blank-lines readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoMissingBlankLines from 'remark-lint-no-missing-blank-lines'
remark()
.use(remarkLint)
+ .use(remarkLintNoMissingBlankLines)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -190,17 +249,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,13 +1,27 @@
/**
* ## When should I use this?
*
* You can use this package to check that no more than one top level heading
* is used.
*
* ## API
*
* The following options (default: `1`) are accepted:
*
* * `number` (example: `1`)
* assumed top level heading rank
*
* ## Recommendation
*
* Documents should almost always have one main heading, which is typically a
* heading with a rank of `1`.
*
* @module no-multiple-toplevel-headings
* @summary
* remark-lint rule to warn when more than one top level heading is used.
* @author Titus Wormer
* @copyright 2015 Titus Wormer
* @license MIT
* @module no-multiple-toplevel-headings
* @fileoverview
* Warn when multiple top level headings are used.
*
* Options: `number`, default: `1`.
*
* @example
* {"name": "ok.md", "setting": 1}
*

View File

@ -10,9 +10,33 @@
[![Backers][backers-badge]][collective]
[![Chat][chat-badge]][chat]
Warn when multiple top level headings are used.
[`remark-lint`][mono] rule to warn when more than one top level heading is used.
Options: `number`, default: `1`.
## Contents
* [What is this?](#what-is-this)
* [When should I use this?](#when-should-i-use-this)
* [Presets](#presets)
* [Install](#install)
* [Use](#use)
* [API](#api)
* [`unified().use(remarkLintNoMultipleToplevelHeadings[, config])`](#unifieduseremarklintnomultipletoplevelheadings-config)
* [Recommendation](#recommendation)
* [Examples](#examples)
* [Compatibility](#compatibility)
* [Contribute](#contribute)
* [License](#license)
## What is this?
This package is a [unified][] ([remark][]) plugin, specifically a `remark-lint`
rule.
Lint rules check markdown code style.
## When should I use this?
You can use this package to check that no more than one top level heading
is used.
## Presets
@ -22,7 +46,94 @@ This rule is included in the following presets:
| - | - |
| [`remark-preset-lint-markdown-style-guide`](https://github.com/remarkjs/remark-lint/tree/main/packages/remark-preset-lint-markdown-style-guide) | |
## Example
## Install
This package is [ESM only][esm].
In Node.js (version 12.20+, 14.14+, or 16.0+), install with [npm][]:
```sh
npm install remark-lint-no-multiple-toplevel-headings
```
In Deno with [Skypack][]:
```js
import remarkLintNoMultipleToplevelHeadings from 'https://cdn.skypack.dev/remark-lint-no-multiple-toplevel-headings@3?dts'
```
In browsers with [Skypack][]:
```html
<script type="module">
import remarkLintNoMultipleToplevelHeadings from 'https://cdn.skypack.dev/remark-lint-no-multiple-toplevel-headings@3?min'
</script>
```
## Use
On the API:
```js
import {read} from 'to-vfile'
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoMultipleToplevelHeadings from 'remark-lint-no-multiple-toplevel-headings'
main()
async function main() {
const file = await remark()
.use(remarkLint)
.use(remarkLintNoMultipleToplevelHeadings)
.process(await read('example.md'))
console.error(reporter(file))
}
```
On the CLI:
```sh
remark --use remark-lint --use remark-lint-no-multiple-toplevel-headings example.md
```
On the CLI in a config file (here a `package.json`):
```diff
"remarkConfig": {
"plugins": [
"remark-lint",
+ "remark-lint-no-multiple-toplevel-headings",
]
}
```
## API
This package exports no identifiers.
The default export is `remarkLintNoMultipleToplevelHeadings`.
### `unified().use(remarkLintNoMultipleToplevelHeadings[, config])`
This rule supports standard configuration that all remark lint rules accept
(such as `false` to turn it off or `[1, options]` to configure it).
The following options (default: `1`) are accepted:
* `number` (example: `1`)
— assumed top level heading rank
## Recommendation
Documents should almost always have one main heading, which is typically a
heading with a rank of `1`.
## Examples
##### `ok.md`
@ -58,59 +169,12 @@ When configured with `1`.
3:1-3:6: Dont use multiple top level headings (1:1)
```
## Install
## Compatibility
This package is [ESM only][esm]:
Node 12+ is needed to use it and it must be `imported`ed instead of `required`d.
[npm][]:
```sh
npm install remark-lint-no-multiple-toplevel-headings
```
This package exports no identifiers.
The default export is `remarkLintNoMultipleToplevelHeadings`.
## Use
You probably want to use it on the CLI through a config file:
```diff
"remarkConfig": {
"plugins": [
"lint",
+ "lint-no-multiple-toplevel-headings",
]
}
```
Or use it on the CLI directly
```sh
remark -u lint -u lint-no-multiple-toplevel-headings readme.md
```
Or use this on the API:
```diff
import {remark} from 'remark'
import {reporter} from 'vfile-reporter'
import remarkLint from 'remark-lint'
import remarkLintNoMultipleToplevelHeadings from 'remark-lint-no-multiple-toplevel-headings'
remark()
.use(remarkLint)
+ .use(remarkLintNoMultipleToplevelHeadings)
.process('_Emphasis_ and **importance**')
.then((file) => {
console.error(reporter(file))
})
```
Projects maintained by the unified collective are compatible with all maintained
versions of Node.js.
As of now, that is Node.js 12.20+, 14.14+, and 16.0+.
Our projects sometimes work with older versions, but this is not guaranteed.
## Contribute
@ -152,17 +216,25 @@ abide by its terms.
[chat]: https://github.com/remarkjs/remark/discussions
[unified]: https://github.com/unifiedjs/unified
[remark]: https://github.com/remarkjs/remark
[mono]: https://github.com/remarkjs/remark-lint
[esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[skypack]: https://www.skypack.dev
[npm]: https://docs.npmjs.com/cli/install
[health]: https://github.com/remarkjs/.github
[contributing]: https://github.com/remarkjs/.github/blob/HEAD/contributing.md
[contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[support]: https://github.com/remarkjs/.github/blob/HEAD/support.md
[support]: https://github.com/remarkjs/.github/blob/main/support.md
[coc]: https://github.com/remarkjs/.github/blob/HEAD/code-of-conduct.md
[coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[license]: https://github.com/remarkjs/remark-lint/blob/main/license

View File

@ -1,11 +1,24 @@
/**
* ## When should I use this?
*
* You can use this package to check that content in paragraphs is not
* indented.
*
* ## API
*
* There are no options.
*
* ## Recommendation
*
* Indenting further lines in a paragraph has no effect.
* Due to this, its recommended to turn this rule on.
*
* @module no-paragraph-content-indent
* @summary
* remark-lint rule to warn when content in paragraphs is indented.
* @author Titus Wormer
* @copyright 2017 Titus Wormer
* @license MIT
* @module no-paragraph-content-indent
* @fileoverview
* Warn when the content in paragraphs is indented.
*
* @example
* {"name": "ok.md"}
*

Some files were not shown because too many files have changed in this diff Show More