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 🙏

© 2025 – Pkg Stats / Ryan Hefner

docusaurus-plugin-backlinks

v1.0.7

Published

Adds Backlink component to your blog posts and docs resources.

Downloads

7

Readme

Docusaurus backlinks plugin

Adds Backlink component to your blog posts and docs resources.

backlinks plugin demonstration

Inspired by anaclumos's solution.

Demo

How to use

  1. Install the plugin
npm install docusaurus-plugin-backlinks
  1. Add the plugin to your docusaurus.config.js:
module.exports = {
  plugins: [
    'docusaurus-plugin-backlinks',
  ],
}
  1. Add the component to your page:
import { Backlink } from "docusaurus-plugin-backlinks/components";
// ...
<Backlink documentPath="/docs/my-page" />

explanation demo

  1. Build the site and enjoy your backlinks
# do not use yarn run dev, it will not work (works only after build)
yarn run build && yarn run serve

How it works

Each time when you build the site, the plugin will generate a backlinks.json file in the _backlinks directory.

This file contains a map of all the links on the site, and the pages that link to them.

The challenge is that Docusaurus doesn't have suitable events and routing API to implement this elegantly, so I need to read and parse each docs file from the disk. For optimization purposes I use regex to parse markdown links instead of using special lexers. This may cause some bugs like parsing commented links, but I think it's an acceptable tradeoff for better performance on large sites.

Also you need to know that the plugin doesn't work in development environment, because we use postBuild event to generate backlinks.

Read my /docs resource that I dedicated to notes about developing this plugin

TODO

  • [ ] Improve component import method. I'm a JS newbie and couldn't figure out how to make JS and TS work together (getting "module not found" when using export {Backlink} from './components/Backlink')
  • [ ] Use ./backlinks.json instead of /backlinks.json (generate file for each route separately)
  • [ ] Maybe even generate .ts or .js files for each route instead of json (microoptimization?)
  • [ ] Use titles instead of slugs in baklinks cards to made them more readable
  • [ ] Write tests for the plugin. Try to break it and fix it. Especially try to find bugs with link parsing
  • [ ] Add options to hide on mobiles, add ignored routes, etc.
  • [ ] Add a way to add custom backlinks to the page (frontmatter or something)
  • [ ] If Docusaurus adds routing API, we can avoid storing titles and excerpts in JSON files
  • [ ] Also, it would be nice to wait for an API to get a list of entities in publications (like in Telegram API). Then we won't need hacky parsers and extra readings from the disk

Personal dev notes

You can ignore it.

Start developing "from scratch"

git clone [email protected]:AMD-NICK/blog.amd-nick.me.git
git clone [email protected]:AMD-NICK/docusaurus-plugin-backlinks.git
cursor blog.amd-nick.me docusaurus-plugin-backlinks
cd blog.amd-nick.me && yarn install && cd ..
cd docusaurus-plugin-backlinks && yarn install && yarn link && yarn run build:watch && ..
cd blog.amd-nick.me && yarn link "docusaurus-plugin-backlinks"
yarn run dev

After changes

# upload changes to npmjs
cd docusaurus-plugin-backlinks
yarn publish --patch (--minor) (--major) (--new-version [version])

# update version in blog's package.json
cd ../blog.amd-nick.me && yarn add docusaurus-plugin-backlinks