@md-plugins/md-plugin-link
@md-plugins/md-plugin-link
A Markdown-It plugin that customizes the rendering of links in Markdown content. This plugin is especially useful for Vue.js applications, where internal links can be replaced with Vue Router components (e.g., <router-link>).
Features
- Replaces standard
<a>tags with a custom link tag (e.g.,MarkdownLinkorrouter-link) for internal links. - Adds a customizable attribute (e.g.,
to) for routing. - Automatically injects import statements for required components into the
pageScriptsproperty in the Markdown-It environment (env). - Retains external links as standard
<a>tags.
Installation
Install the plugin via your preferred package manager:
# with pnpm:
pnpm add @md-plugins/md-plugin-link
# with bun:
bun add @md-plugins/md-plugin-link
# with Yarn:
yarn add @md-plugins/md-plugin-link
# with npm:
npm install @md-plugins/md-plugin-link
Usage
Basic Setup
import MarkdownIt from 'markdown-it';
import { linkPlugin } from '@md-plugins/md-plugin-link';
import type { MarkdownItEnv } from '@md-plugins/shared';
const md = new MarkdownIt();
md.use(linkPlugin, {
linkTag: 'MarkdownLink', // Custom link tag (e.g., Vue Router component)
linkToKeyword: 'to', // Attribute to use for internal links
pageScript: 'import MarkdownLink from "@/.q-press/components/MarkdownLink.vue";',
});
const markdownContent = `
[Internal Link](https://github.com/md-plugins/md-plugins/blob/HEAD/internal-page)
[External Link](https://example.com)
`;
const env: MarkdownItEnv = {};
const renderedOutput = md.render(markdownContent, env);
console.log('Rendered Output:', renderedOutput);
console.log('Page Scripts:', Array.from(env.pageScripts || []));
Example Output
For the example above, the plugin produces the following output:
<p>
<MarkdownLink to="/internal-page">Internal Link</MarkdownLink>
<a href="https://example.com">External Link</a>
</p>
Additionally, the pageScripts property in the env object will contain:
Set(['import MarkdownLink from "@/.q-press/components/MarkdownLink.vue";'])
Options
The md-plugin-link plugin supports the following options:
| Option | Type | Default | Description |
|---|---|---|---|
| linkTag | string | 'MarkdownLink' | Custom tag to use for internal links. |
| linkToKeyword | string | 'to' | Attribute to use for internal links (e.g., to for router-link). |
| pageScript | string | 'import MarkdownLink from "@/.q-press/components/MarkdownLink.vue";' | Import statement for required components. |
Testing
Run the tests to ensure the plugin behaves as expected:
pnpm test
Documentation
In case this README falls out of date, please refer to the documentation for the latest information.
Support
If md-plugin-link is useful in your workflow and you want to support ongoing maintenance:
- GitHub Sponsors: https://github.com/sponsors/hawkeye64
- PayPal: https://paypal.me/hawkeye64
License
This project is licensed under the MIT License. See the LICENSE file for details.
Related Packages
A markdown-it plugin for handling frontmatter in markdown files.
A markdown-it plugin for handling tables with custom tag and styles.
Version History
| Version | Released | License |
|---|---|---|
| 2.2.0 | MIT | |
| 2.1.0 | MIT | |
| 2.0.4 | MIT | |
| 2.0.3 | MIT | |
| 2.0.2 | MIT | |
| 2.0.1 | MIT | |
| 2.0.0 | MIT | |
| 1.2.0 | MIT | |
| 1.1.0 | MIT | |
| 1.0.0 | MIT |
Pre-releases (77)
| Version | Released | License |
|---|---|---|
| 0.1.0-rc.19 | MIT | |
| 0.1.0-rc.18 | MIT | |
| 0.1.0-rc.17 | MIT | |
| 0.1.0-rc.16 | MIT | |
| 0.1.0-rc.15 | MIT | |
| 0.1.0-rc.14 | MIT | |
| 0.1.0-rc.13 | MIT | |
| 0.1.0-rc.12 | MIT | |
| 0.1.0-rc.11 | MIT | |
| 0.1.0-rc.10 | MIT | |
| 0.1.0-rc.9 | MIT | |
| 0.1.0-rc.8 | MIT | |
| 0.1.0-rc.7 | MIT | |
| 0.1.0-rc.6 | MIT | |
| 0.1.0-rc.5 | MIT | |
| 0.1.0-rc.4 | MIT | |
| 0.1.0-rc.3 | MIT | |
| 0.1.0-rc.2 | MIT | |
| 0.1.0-rc.1 | MIT | |
| 0.1.0-rc.0 | MIT | |
| 0.1.0-beta.29 | MIT | |
| 0.1.0-beta.28 | MIT | |
| 0.1.0-beta.27 | MIT | |
| 0.1.0-beta.26 | MIT | |
| 0.1.0-beta.25 | MIT | |
| 0.1.0-beta.24 | MIT | |
| 0.1.0-beta.23 | MIT | |
| 0.1.0-beta.22 | MIT | |
| 0.1.0-beta.21 | MIT | |
| 0.1.0-beta.20 | MIT |
Showing the latest 30 of 77. See every release on npm