remark-lint rule to warn when URLs are dead
npm install remark-lint-no-dead-urls[![Build][badge-build-image]][badge-build-url]
[![Coverage][badge-coverage-image]][badge-coverage-url]
[![Downloads][badge-downloads-image]][badge-downloads-url]
[![Size][badge-size-image]][badge-size-url]
[![Sponsors][badge-sponsors-image]][badge-collective-url]
[![Backers][badge-backers-image]][badge-collective-url]
[![Chat][badge-chat-image]][badge-chat-url]
[remark-lint][github-remark-lint] rule to warn when URLs are dead.
* What is this?
* When should I use this?
* Install
* Use
* API
* Options
* [unified().use(remarkLintNoDeadUrls[, options])](#unifieduseremarklintnodeadurls-options)
* Related
* Compatibility
* Security
* Contribute
* License
This lint rule checks whether URLs are alive or not.
You can use this lint rule to check that URLs are alive.
It’s similar to [remark-validate-links][github-remark-validate-links],
but there’s an important difference.
That package checks the file system locally:
whether path/to/example.md exists.
But this package,remark-lint-no-dead-urls,
checks the internet:
whether https://a.com is alive,/docs/example is reachable on https://mydomain.com,
and even whether certain IDs exist on a web page.
This package uses [dead-or-alive][github-dead-or-alive].
You can use it when you want to check URLs programmatically yourself.
This package is [ESM only][github-gist-esm].
In Node.js (version 18+),
install with [npm][npm-install]:
``sh`
npm install remark-lint-no-dead-urls
In Deno with [esm.sh][esm-sh]:
`js`
import remarkLintNoDeadUrls from 'https://esm.sh/remark-lint-no-dead-urls@2'
In browsers with [esm.sh][esm-sh]:
`html`
On the API:
`js
import remarkLintNoDeadUrls from 'remark-lint-no-dead-urls'
import remarkLint from 'remark-lint'
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(remarkLintNoDeadUrls)
.use(remarkStringify)
.process(file)
console.error(reporter(file))
`
On the CLI:
`sh`
remark --frail --use remark-lint --use remark-lint-no-dead-urls .
On the CLI in a config file (here a package.json):
`diff`
…
"remarkConfig": {
"plugins": [
…
"remark-lint",
+ "remark-lint-no-dead-urls",
…
]
}
…
This package exports no identifiers.
It exports the additional [TypeScript][] type
[Options][api-options].remarkLintNoDeadUrls
The default export is
[][api-remark-lint-no-dead-urls].
Configuration (TypeScript type).
###### Fields
* deadOrAliveOptions (Options from dead-or-alive, optional)dead-or-alive
— options passed to ;deadOrAliveOptions.findUrls
[][github-dead-or-alive-options] is always offfrom
as further URLs are not applicable
* (string, optional, example: 'https://example.com/from')origin
— check relative values relative to this URL;
you can also define this by setting and pathname infile.data.meta
skipLocalhost
* (boolean, default: false)localhost
— whether to ignore links such as http://localhost/*,http://127.0.0.1/*
;/^(https?:\/\/)(localhost|127\.0\.0\.1)(:\d+)?/
shortcut for a skip pattern of
skipOffline
* (boolean, default: false)skipUrlPatterns
— whether to let offline runs pass quietly
* (Array, optional)new RegExp(pattern).test(url) === true
— list of patterns for URLs that should be skipped;
each URL will be tested against each pattern and will be ignored if
Warn when URLs are dead.
###### Notes
To improve performance,
decrease maxRetries in [deadOrAliveOptions][github-dead-or-alive-options]sleep
and/or decrease the value used for in deadOrAliveOptions.
The normal behavior is to assume connections might be flakey and to sleep a
while and retry a couple times.
If you do not care whether anchors exist and don’t need to support HTML
redirects,
you can pass checkAnchor: false and followMetaHttpEquiv: false indeadOrAliveOptions
[][github-dead-or-alive-options],
which enables a fast path without parsing HTML.
###### Parameters
* options ([Options][api-options], optional)
— configuration
###### Returns
Transform ((tree: Root, file: VFile) => Promise).
* [remark-lint][github-remark-lint]remark-validate-links
— markdown code style linter
* [][github-remark-validate-links]
— ensure local links work
This projects is 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-dead-urls@2,
compatible with Node.js 18.
This package can typically be considered safe.
Note that this package checks URLs over the internet.
Don’t use this if you consider that’s dangerous.
See [contributing.md][health-contributing] in [remarkjs/.github][health]support.md`][health-support] for ways to get help.
for ways to get started.
See [
This project has a [code of conduct][health-coc].
By interacting with this repository, organization, or community you agree to
abide by its terms.
[MIT][file-license] © [David Clark][github-david-clark]
[api-remark-lint-no-dead-urls]: #unifieduseremarklintnodeadurls-options
[api-options]: #options
[badge-backers-image]: https://opencollective.com/unified/backers/badge.svg
[badge-build-image]: https://github.com/remarkjs/remark-lint-no-dead-urls/actions/workflows/main.yml/badge.svg
[badge-build-url]: https://github.com/remarkjs/remark-lint-no-dead-urls/actions
[badge-collective-url]: https://opencollective.com/unified
[badge-coverage-image]: https://img.shields.io/codecov/c/github/remarkjs/remark-lint-no-dead-urls.svg
[badge-coverage-url]: https://codecov.io/github/remarkjs/remark-lint-no-dead-urls
[badge-downloads-image]: https://img.shields.io/npm/dm/remark-lint-no-dead-urls.svg
[badge-downloads-url]: https://www.npmjs.com/package/remark-lint-no-dead-urls
[badge-size-image]: https://img.shields.io/bundlejs/size/remark-lint-no-dead-urls
[badge-size-url]: https://bundlejs.com/?q=remark-lint-no-dead-urls
[badge-sponsors-image]: https://opencollective.com/unified/sponsors/badge.svg
[badge-chat-image]: https://img.shields.io/badge/chat-discussions-success.svg
[badge-chat-url]: https://github.com/remarkjs/remark/discussions
[esm-sh]: https://esm.sh
[file-license]: license
[github-david-clark]: https://github.com/davidtheclark
[github-dead-or-alive-options]: https://github.com/wooorm/dead-or-alive#options
[github-dead-or-alive]: https://github.com/wooorm/dead-or-alive
[github-gist-esm]: https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
[github-remark-validate-links]: https://github.com/remarkjs/remark-validate-links
[github-remark-lint]: https://github.com/remarkjs/remark-lint
[health-coc]: https://github.com/remarkjs/.github/blob/main/code-of-conduct.md
[health-contributing]: https://github.com/remarkjs/.github/blob/main/contributing.md
[health-support]: https://github.com/remarkjs/.github/blob/main/support.md
[health]: https://github.com/remarkjs/.github
[npm-install]: https://docs.npmjs.com/cli/install
[typescript]: https://www.typescriptlang.org