
remark-lint
rule to warn when spaces are used for hard breaks.
Either optionally spaces at all,
or more spaces than the needed 2.
Contents
What is this?
This package checks whitespace hard breaks.
When should I use this?
You can use this package to check that the spaces in hard breaks are
consistent.
Presets
This plugin is included in the following presets:
Install
This package is ESM only.
In Node.js (version 16+),
install with npm:
npm install remark-lint-hard-break-spaces
In Deno with esm.sh
:
import remarkLintHardBreakSpaces from 'https://esm.sh/remark-lint-hard-break-spaces@4'
In browsers with esm.sh
:
<script type="module">
import remarkLintHardBreakSpaces from 'https://esm.sh/remark-lint-hard-break-spaces@4?bundle'
</script>
Use
On the API:
import remarkLint from 'remark-lint'
import remarkLintHardBreakSpaces from 'remark-lint-hard-break-spaces'
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(remarkLintHardBreakSpaces)
.use(remarkStringify)
.process(file)
console.error(reporter(file))
On the CLI:
remark --frail --use remark-lint --use remark-lint-hard-break-spaces .
On the CLI in a config file (here a package.json
):
…
"remarkConfig": {
"plugins": [
…
"remark-lint",
+ "remark-lint-hard-break-spaces",
…
]
}
…
API
This package exports no identifiers.
It exports the TypeScript type
Options
.
The default export is
remarkLintHardBreakSpaces
.
Warn when more spaces are used than needed for hard breaks.
Parameters
options
(Options
, default: 'consistent'
)
— either a preferred indent or whether to detect the first style
and warn for further differences
Returns
Transform (Transformer
from unified
).
Options
Configuration (TypeScript type).
Fields
allowSpaces
(boolean
, default: true
)
— allow trailing space hard breaks at all;
use escape hard breaks otherwise
Recommendation
Less than two spaces do not create a hard breaks and more than two spaces
have no effect.
Due to this, it’s recommended to turn this rule on.
With CommonMark,
it is now possible to use a backslash (\
) at the end of a line to create a
hard break.
It is now recommended to pass allowSpaces: false
.
Examples
ok.md
In
**Mercury** is the first planet from the Sun␠␠
and the smallest in the Solar System.
**Venus** is the second planet from\
the Sun.
Out
No messages.
not-ok.md
In
**Mercury** is the first planet from the Sun␠␠␠
and the smallest in the Solar System.
Out
1:45-2:1: Unexpected `3` spaces for hard break, expected `2` spaces
escape.md
When configured with { allowSpaces: false }
.
In
**Mercury** is the first planet from the Sun␠␠
and the smallest in the Solar System.
**Venus** is the second planet from the\
Sun.
Out
1:45-2:1: Unexpected `2` spaces for hard break, expected escape
containers.md
In
👉 Note: this example uses
GFM (remark-gfm
).
[^mercury]:
> * > * **Mercury** is the first planet from the Sun␠␠␠
> > and the smallest in the Solar System.
Out
2:57-3:1: Unexpected `3` spaces for hard break, expected `2` spaces
not-ok-options.md
When configured with '🌍'
.
Out
1:1: Unexpected value `🌍` for `options`, expected object
not-ok-options-field.md
When configured with { allowSpaces: '🌍' }
.
Out
1:1: Unexpected value `🌍` for `options.allowSpaces`, expected `boolean`
Compatibility
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-hard-break-spaces@4
,
compatible with Node.js 16.
Contribute
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.
License
MIT © Titus Wormer