![require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages](https://cdn.sanity.io/images/cgdhsj6q/production/be8ab80c8efa5907bc341c6fefe9aa20d239d890-1600x1097.png?w=400&fit=max&auto=format)
Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
remark-lint-no-duplicate-definitions
Advanced tools
remark-lint rule to warn on duplicate definitions
The remark-lint-no-duplicate-definitions package is a linting rule for remark-lint that ensures there are no duplicate definitions in Markdown files. This helps maintain clean and error-free Markdown documents by preventing multiple definitions with the same identifier.
Detect Duplicate Definitions
This feature detects duplicate definitions in a Markdown file. In the provided code sample, the identifier 'foo' is defined twice, which would trigger a linting error.
```markdown
[foo]: http://example.com
[foo]: http://example.org
```
remark-lint is a plugin for remark that provides a collection of linting rules for Markdown files. It can be extended with additional rules like remark-lint-no-duplicate-definitions. While remark-lint provides a broader set of rules, remark-lint-no-duplicate-definitions focuses specifically on detecting duplicate definitions.
markdownlint is a Node.js style checker and linting tool for Markdown files. It includes a variety of rules to enforce consistent Markdown style, including rules to prevent duplicate definitions. It is similar to remark-lint-no-duplicate-definitions but offers a wider range of linting capabilities.
markdown-it is a Markdown parser that can be extended with plugins to add various functionalities, including linting. While it is primarily a parser, it can be used with plugins to achieve similar functionality to remark-lint-no-duplicate-definitions by detecting and preventing duplicate definitions.
remark-lint
rule to warn when identifiers are defined multiple times.
This package checks that defined identifiers are unique.
You can use this package to check that definitions are useful.
This plugin is included in the following presets:
Preset | Options |
---|---|
remark-preset-lint-recommended |
This package is ESM only. In Node.js (version 16+), install with npm:
npm install remark-lint-no-duplicate-definitions
In Deno with esm.sh
:
import remarkLintNoDuplicateDefinitions from 'https://esm.sh/remark-lint-no-duplicate-definitions@4'
In browsers with esm.sh
:
<script type="module">
import remarkLintNoDuplicateDefinitions from 'https://esm.sh/remark-lint-no-duplicate-definitions@4?bundle'
</script>
On the API:
import remarkLint from 'remark-lint'
import remarkLintNoDuplicateDefinitions from 'remark-lint-no-duplicate-definitions'
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(remarkLintNoDuplicateDefinitions)
.use(remarkStringify)
.process(file)
console.error(reporter(file))
On the CLI:
remark --frail --use remark-lint --use remark-lint-no-duplicate-definitions .
On the CLI in a config file (here a package.json
):
…
"remarkConfig": {
"plugins": [
…
"remark-lint",
+ "remark-lint-no-duplicate-definitions",
…
]
}
…
This package exports no identifiers.
It exports no additional TypeScript types.
The default export is
remarkLintNoDuplicateDefinitions
.
unified().use(remarkLintNoDuplicateDefinitions)
Warn when identifiers are defined multiple times.
There are no options.
Transform (Transformer
from unified
).
It’s a mistake when the same identifier is defined multiple times.
ok.md
[mercury]: https://example.com/mercury/
[venus]: https://example.com/venus/
No messages.
not-ok.md
[mercury]: https://example.com/mercury/
[mercury]: https://example.com/venus/
2:1-2:38: Unexpected definition with an already defined identifier (`mercury`), expected unique identifiers
gfm.md
👉 Note: this example uses GFM (
remark-gfm
).
Mercury[^mercury].
[^mercury]:
Mercury is the first planet from the Sun and the smallest in the Solar
System.
[^mercury]:
Venus is the second planet from the Sun.
7:1-7:12: Unexpected footnote definition with an already defined identifier (`mercury`), expected unique identifiers
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-no-duplicate-definitions@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.
FAQs
remark-lint rule to warn on duplicate definitions
The npm package remark-lint-no-duplicate-definitions receives a total of 173,201 weekly downloads. As such, remark-lint-no-duplicate-definitions popularity was classified as popular.
We found that remark-lint-no-duplicate-definitions demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.