@yankeeinlondon/link-builder

adds contextual classes and features to links in documents used in vite-plugin-md
9,899 2
Install
npm install @yankeeinlondon/link-builder
Latest Version:1.2.1
Vue:3
License:MIT
Last Updated:Nov 25, 2023
Links: GitHub  ·  npm
Maintainer: ksnyde

Link Builder for vite-plugin-md

This repo is hosted externally but provided as a "built-in" part of the vite-plugin-md plugin.

Provides a power-user features for the links in your vite-plugin-md documents.

Usage

// vite.config.js
import Markdown from 'vite-plugin-md'
import { link } from '@yankeeinlondon/link-builder'

export default defineConfig({
  // ...
  plugins: [
    Markdown({ builders: [link()] }),
  ],
})

Default Behavior

With no configuration passed into link() you will get the following behavior:

  • Class Attribution
    • internal vs. external links
    • any reference to a http (versus https:) resource will be given the class "insecure"
    • if a non-HTTP protocol is specified (e.g., mailto:, file:, etc.)
    • if a document has an href directly to an image, document, code the content type will be be given a class
    • anchor links (aka, links to the same page) will also get a class
  • VueJS Router
    • any internal link will be converted from <a href="https://github.com/yankeeinlondon/link-builder/blob/HEAD/xyz"> link to a <router-link to="xyz" > and the relative paths needed to produce a valid route will be calculated for you
  • Link Cleanup
    • in vs-code (and various other editors), linking between two Markdown files is supported with autocomplete but the completed link maps directly to the markdown FILE (aka, has .md extension)
    • this is desireable for file based linking but needs to be tidied up when converting to HTTP based navigation
    • The default configuration will:
      • remove index.md fully just leaving the "directory" or "route"
      • remove .md from all other links

Configuration

The configuration is all done with a single dictionary configuration object passed into link( config ) and is fully typed (LinkOptions). Rather than documenting this twice, just refer to the typed documentation in the config object.

Related Packages

@yankeeinlondon/code-builder

Adds code highlighting support to vite-plugin-md

8,956 3
@yankeeinlondon/meta-builder

Adds better metadata management capabilities to vite-plugin-md via the Builder A...

8,627 1
vuex-typex

A TypeScript pattern for strongly-typed access to Vuex Store modules

103,335 190
vue-dag

Directed acyclic graph (DAG) builder for Vue.js

5,451 49
vue-nformr

Add your nFormr forms to existing Vue projects

1,811

Version History

Version Released Vue License
1.2.1 ^3.2.45 MIT
1.2.0 ^3.2.45 MIT
1.1.7 ^3.2.45 MIT
1.1.6 ^3.2.45 MIT
1.1.4 ^3.2.45 MIT
Pre-releases (8)
Version Released Vue License
1.0.0-beta.8 ^3.2.37 MIT
1.0.0-beta.7 ^3.2.37 MIT
1.0.0-beta.5 ^3.2.37 MIT
1.0.0-beta.3 ^3.2.37 MIT
1.0.0-beta.1 ^3.2.37 MIT