remark-lint
rule to warn when code blocks violate a given style.
- What is this?
- When should I use this?
- Presets
- Install
- Use
- API
- Recommendation
- Fix
- Examples
- Compatibility
- Contribute
- License
This package checks the style of code blocks.
You can use this package to check that the style of code blocks is consistent.
This plugin is included in the following presets:
Preset | Options |
---|---|
remark-preset-lint-consistent |
'consistent' |
remark-preset-lint-markdown-style-guide |
'fenced' |
This package is ESM only. In Node.js (version 16+), install with npm:
npm install remark-lint-code-block-style
In Deno with esm.sh
:
import remarkLintCodeBlockStyle from 'https://esm.sh/remark-lint-code-block-style@4'
In browsers with esm.sh
:
<script type="module">
import remarkLintCodeBlockStyle from 'https://esm.sh/remark-lint-code-block-style@4?bundle'
</script>
On the API:
import remarkLint from 'remark-lint'
import remarkLintCodeBlockStyle from 'remark-lint-code-block-style'
import remarkParse from 'remark-parse'
import remarkStringify from 'remark-stringify'
import {read} from 'to-vfile'
import {unified} from 'unified'
import {reporter} from 'vfile-reporter'
const file = await read('example.md')
await unified()
.use(remarkParse)
.use(remarkLint)
.use(remarkLintCodeBlockStyle)
.use(remarkStringify)
.process(file)
console.error(reporter(file))
On the CLI:
remark --frail --use remark-lint --use remark-lint-code-block-style .
On the CLI in a config file (here a package.json
):
…
"remarkConfig": {
"plugins": [
…
"remark-lint",
+ "remark-lint-code-block-style",
…
]
}
…
This package exports no identifiers.
It exports the TypeScript types
Options
and
Style
.
The default export is
remarkLintCodeBlockStyle
.
Warn when code blocks violate a given style.
options
(Options
, default:'consistent'
) — preferred style or whether to detect the first style and warn for further differences
Transform (Transformer
from unified
).
Configuration (TypeScript type).
type Options = Style | 'consistent'
Style (TypeScript type).
type Style = 'indented' | 'fenced'
Indentation in markdown is complex as lists and indented code interfere in
unexpected ways.
Fenced code has more features than indented code: it can specify a
programming language.
Since CommonMark took the idea of fenced code from GFM,
fenced code became widely supported.
Due to this, it’s recommended to configure this rule with 'fenced'
.
remark-stringify
always formats code blocks as
fenced.
Pass fences: false
to only use fenced code blocks when they have a
language and as indented code otherwise.
When configured with 'indented'
.
venus()
Mercury.
earth()
No messages.
When configured with 'fenced'
.
```
venus()
```
Mercury.
```
earth()
```
No messages.
venus()
Mercury.
```
earth()
```
5:1-7:4: Unexpected fenced code block, expected indented code blocks
When configured with 'indented'
.
```
venus()
```
Mercury.
```
earth()
```
1:1-3:4: Unexpected fenced code block, expected indented code blocks
7:1-9:4: Unexpected fenced code block, expected indented code blocks
When configured with 'fenced'
.
venus()
Mercury.
earth()
1:1-1:12: Unexpected indented code block, expected fenced code blocks
5:1-5:12: Unexpected indented code block, expected fenced code blocks
When configured with '🌍'
.
1:1: Unexpected value `🌍` for `options`, expected `'fenced'`, `'indented'`, or `'consistent'`
Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of
Node.
This means we try to keep the current release line,
remark-lint-code-block-style@4
,
compatible with Node.js 16.
See contributing.md
in remarkjs/.github
for ways
to get started.
See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.