@md-plugins/md-plugin-imports

A markdown-it plugin for handling imports in markdown files.
13,210 4
Install
npm install @md-plugins/md-plugin-imports
Latest Version:2.2.0
License:MIT
Last Updated:Sep 16, 2026
Links: GitHub  ·  npm
Maintainer: hawkeye64

@md-plugins/md-plugin-imports

npm version npm downloads npm monthly downloads license

GitHub Sponsors button PayPal donate button

Discord X

A Markdown-It plugin that extracts and stores <script import> blocks from Markdown content. This is useful for managing page-level imports in environments where Markdown is rendered dynamically, such as in Vue.js applications.

The imports are stored in the pageScripts property of the Markdown-It environment (env). During post-processing the array if imports (Set) can be used to inject the required scripts into the Vue SFC.

Features

  • Extracts <script import> blocks from Markdown content.
  • Stores the extracted imports in the pageScripts property of the Markdown-It environment (env).
  • Cleans the <script import> blocks from the rendered output, leaving the rest of the Markdown intact.
  • Handles multiple <script import> blocks gracefully.

Installation

Install the plugin via your preferred package manager:

# with pnpm:
pnpm add @md-plugins/md-plugin-imports
# with bun:
bun add @md-plugins/md-plugin-imports
# with Yarn:
yarn add @md-plugins/md-plugin-imports
# with npm:
npm install @md-plugins/md-plugin-imports

Usage

Basic Setup

import MarkdownIt from 'markdown-it';
import { importsPlugin } from '@md-plugins/md-plugin-imports';
import type { MarkdownItEnv } from '@md-plugins/shared';

const md = new MarkdownIt();
md.use(importsPlugin);

const markdownContent = `
<script import>
import A from './A.vue';
import B from './B.vue';
</script>

# Header

Some content here.
`;

const env: MarkdownItEnv = {};
const renderedOutput = md.render(markdownContent, env);

console.log('Rendered Output:', renderedOutput);
console.log('Page Scripts:', env.pageScripts);

Options

The md-plugin-imports plugin does not currently accept options. All <script import> blocks are processed by default.

Script Block Syntax

The plugin recognizes <script import> blocks in the following format:

<script import>
import A from './A.vue';
import B from './B.vue';
</script>

Notes

  • Script blocks should start with <script import> and end with </script>.
  • The plugin trims and parses the contents of the block line-by-line.

Advanced Usage

Multiple Script Blocks

The plugin supports multiple <script import> blocks in a single Markdown file:

<script import>
import A from './A.vue';
</script>

# Header

<script import>
import B from './B.vue';
</script>

Both import A from './A.vue'; and import B from './B.vue'; will be added to the pageScripts set. Internally, a Set is used to ensure uniqueness.

Frontmatter Compatibility

The plugin does not interfere with frontmatter or other Markdown content:

---
title: Frontmatter Example
---

<script import>
import C from './C.vue';
</script>

# Header

Some content here.

The plugin processes the <script import> block while leaving the frontmatter intact.

Testing

Run the unit tests with Vitest:

pnpm test

Documentation

In case this README falls out of date, please refer to the documentation for the latest information.

Support

If md-plugin-imports is useful in your workflow and you want to support ongoing maintenance:

License

This project is licensed under the MIT License. See the LICENSE file for details.

Related Packages

@md-plugins/md-plugin-image

A markdown-it plugin for handling images.

15,902 4
@md-plugins/md-plugin-inlinecode

A markdown-it plugin for handling inline code.

13,671 4
@md-plugins/md-plugin-frontmatter

A markdown-it plugin for handling frontmatter in markdown files.

13,642 4
@md-plugins/md-plugin-headers

A markdown-it plugin for handling headers (H1-H6).

13,577 4
@md-plugins/md-plugin-table

A markdown-it plugin for handling tables with custom tag and styles.

13,563 4

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
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