
Product
Introducing Pull Request Stories to Help Security Teams Track Supply Chain Risks
Socket’s new Pull Request Stories give security teams clear visibility into dependency risks and outcomes across scanned pull requests.
markdownlint-rule-relative-links
Advanced tools
Custom rule for markdownlint to validate relative links.
Custom rule for markdownlint to validate relative links.
markdownlint-rule-relative-links is a markdownlint custom rule to validate relative links.
It ensures that relative links (using file:
protocol) are working and exists in the file system of the project that uses markdownlint.
File structure:
├── abc.txt
└── awesome.md
With awesome.md
content:
[abc](./abc.txt)
[Invalid link](./invalid.txt)
Running markdownlint-cli2 with markdownlint-rule-relative-links
will output:
awesome.md:3 relative-links Relative links should be valid ["./invalid.txt" should exist in the file system]

).markdownlint
rule - MD051 (e.g: [Link](./awesome.md#heading)
).https://example.com/
or /absolute/path.png
).root_path
configuration option.<a href="./link.txt" />
or <img src="./image.png" />
).Contributions are welcome to improve the rule, and to alleviate these limitations. See CONTRIBUTING.md for more information.
Node.js >= 22.0.0
npm install --save-dev markdownlint-rule-relative-links
There are various ways markdownlint can be configured using objects, config files etc. For more information on configuration refer to options.config.
We recommend configuring markdownlint-cli2 over markdownlint-cli for compatibility with the vscode-markdownlint extension.
.markdownlint-cli2.mjs
import relativeLinksRule from "markdownlint-rule-relative-links"
const config = {
config: {
default: true,
"relative-links": true,
},
globs: ["**/*.md"],
ignores: ["**/node_modules"],
customRules: [relativeLinksRule],
}
export default config
package.json
{
"scripts": {
"lint:markdown": "markdownlint-cli2"
}
}
GitHub (and, likely, other similar platforms) resolves absolute paths in Markdown links relative to the repository root.
To validate such links, add root_path
option to the configuration:
config: {
default: true,
"relative-links": {
root_path: ".",
},
},
After this change, all absolute paths will be converted to relative paths, and will be resolved relative to the specified directory.
For example, if you run markdownlint from a subdirectory (if package.json
is located in a subdirectory), you should set root_path
to ".."
.
node --run lint:markdown
Anyone can help to improve the project, submit a Feature Request, a bug report or even correct a simple spelling mistake.
The steps to contribute can be found in the CONTRIBUTING.md file.
FAQs
Custom rule for markdownlint to validate relative links.
We found that markdownlint-rule-relative-links demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer 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.
Product
Socket’s new Pull Request Stories give security teams clear visibility into dependency risks and outcomes across scanned pull requests.
Research
/Security News
npm author Qix’s account was compromised, with malicious versions of popular packages like chalk-template, color-convert, and strip-ansi published.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.