npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@elasticpath/textlint-rule-no-dead-relative-link

v1.1.1

Published

Textlint rule to validate relative links(including anchor links) in markdown documents

Downloads

7,631

Readme

textlint-rule-no-dead-relative-link

This is a textlint rule that validate links in markdown documents. It does the following

  • It ignores external link. The RegExp used to filter out such links is /^[a-z][a-z0-9+.-]*:/i
  • For all relative links, it checks that there is a file specified by the link. The relative links are resolved relative to the file containing the link.
  • For all relative links with anchors or just anchor within the same file, it checks that the anchor exists. It treats anchor links to markdown documents the same way as github does i.e. the rule uses github-slugger to do validation.

Installation

  • Since this is a textlint rule, first install textlint by following the textlint getting started guide.
  • This rule is available as an npm package and can be installed using
    • npm install --save-dev textlint-rule-no-dead-relative-link
      or
    • yarn add --dev textlint-rule-no-dead-relative-link and then yarn install

Usage

If you are unfamiliar with textlint then refer to configuring textlint for textlint configuration details.

Add one of the following to .textlintrc file

  • without any options
{
    "rules": {
        "no-dead-relative-link": true
    }
}

or

  • with options
{
    "rules": {
        "no-dead-relative-link": {
            "resolve-as-markdown": "[.html]"
        }
    }
}

To use it via command line arguments

textlint --rule textlint-rule-no-dead-relative-link README.md

Options

resolve-as-markdown

This option takes an array of file extension values and treats files with those extensions as if they are markdown files.

For e.g. With the following configuration

{
    "rules": {
        "no-dead-relative-link": {
            "resolve-as-markdown": [".html"]
        }
    }
}

and [README](README.html) as input, this rule will check for the existence of README.md file.

route-map

Use this option when relative links need to be validated using an alternate file path.

This option takes an array of source and destination pairs. The source value is a Regex, and the destination value is a String that can include capture groups from the source using the $ notation.

For e.g. With the following configuration

{
    "rules": {
        "no-dead-relative-link": {
            "route-map": [
                {
                    "source": "^../javadocs/(\\d+\\.\\d+\\.\\w+)", 
                    "destination": "../../static/javadocs/$1"
                }
            ]
        }
    }
}

and ../javadocs/1.0.x/overview-summary.html as the link being checked, this rule checks for the existence of the overview-summary.html file at ../../static/javadocs/1.0.x/overview-summary.html.

route-map Ordering

Ensure each route-map pair is specific because the route-map option will validate relative links using the first matching regex found in the configuration.

For e.g. With the following configuration

{
    "rules": {
        "no-dead-relative-link": {
            "route-map": [
                {
                    "source": "../../javadocs/",
                    "destination": "../website/static/javadocs/"
                },
                {
                    "source": "../javadocs/1.0.x/",
                    "destination": "../../static/javadocs/1.0.x/"
                }
            ]
        }
    }
}

and ../../javadocs/1.0.x/overview-summary.html as the link being checked, this rule checks for the existence of the overview-summary.html file at the first destination ../website/static/javadocs/1.0.x/overview-summary.html instead of the second destination ../../static/javadocs/1.0.x/overview-summary.html.