unified-lint-rule
unified helper to help make lint rules.
Contents
What is this?
This package is a helper that makes it a bit easier to create linting rules.
When should I use this?
You can use this package when you want to make custom lint rules.
Install
This package is ESM only. In Node.js (version 16+), install with npm:
npm install unified-lint-rule
In Deno with esm.sh:
import {lintRule} from 'https://esm.sh/unified-lint-rule@3'
In browsers with esm.sh:
<script type="module">
import {lintRule} from 'https://esm.sh/unified-lint-rule@3?bundle'
</script>
Use
import {lintRule} from 'unified-lint-rule'
const remarkLintFileExtension = lintRule(
'remark-lint:file-extension',
function (tree, file, options) {
const ext = file.extname
const option = options || 'md'
if (ext && ext.slice(1) !== option) {
file.message('Incorrect extension: use `' + option + '`')
}
}
)
export default remarkLintFileExtension
API
This package exports the identifier
lintRule.
It exports the TypeScript types
Label,
Meta,
Next, and
Severity.
There is no default export.
lintRule(meta, rule)
Create a plugin.
Parameters
Returns
Plugin (Plugin from unified).
Label
Severity label (TypeScript type);
'off': 0, 'on' and warn: 1, 'error': 2.
Type
type Label = 'error' | 'on' | 'off' | 'warn'
Meta
Rule metadata (TypeScript type).
Fields
origin(string) — name of the lint ruleurl(string, optional) — link to documentation
Next
Callback passed to rules (TypeScript type).
If the signature of a rule accepts a fourth argument, the rule may perform asynchronous operations, and must call it.
Parameters
error(Error, optional) — fatal error to stop linting
Returns
Nothing (undefined).
Rule
Rule (TypeScript type).
Parameters
tree(Nodefromunist) — treefile(VFile) — fileoptions(unknown, optional) — parameter
Returns
Nothing (Promise<undefined> or undefined).
Severity
Severity number (TypeScript type);
0: 'off', 1: 'on' and warn, 2: 'error'.
Type
type Severity = 0 | 1 | 2
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,
unified-lint-rule@3,
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.