
Security News
Crates.io Implements Trusted Publishing Support
Crates.io adds Trusted Publishing support, enabling secure GitHub Actions-based crate releases without long-lived API tokens.
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.
Security News
Crates.io adds Trusted Publishing support, enabling secure GitHub Actions-based crate releases without long-lived API tokens.
Research
/Security News
Undocumented protestware found in 28 npm packages disrupts UI for Russian-language users visiting Russian and Belarusian domains.
Research
/Security News
North Korean threat actors deploy 67 malicious npm packages using the newly discovered XORIndex malware loader.