JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 9172
  • Score
    100M100P100Q129513F
  • License MPL-2.0

Core engine to convert extended MDAST to DOCX. Supports plugins for footnotes, images, lists, tables, and more. Designed for seamless Markdown-to-DOCX conversion.

Package Exports

  • @m2d/core
  • @m2d/core/dist/index.js
  • @m2d/core/dist/index.mjs

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@m2d/core) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@m2d/core

Version Downloads Bundle Size

The core engine that powers mdast2docx — convert Markdown Abstract Syntax Trees (MDAST) into DOCX effortlessly.


✨ Features

  • ✅ Lightweight and fast MDAST to DOCX conversion
  • ✅ Works on both client-side and server-side environments
  • ✅ Built-in support for section-based rendering
  • ✅ Plugin-friendly architecture

Note: With a lean core, functionality can be extended via plugins such as @m2d/html, @m2d/image, @m2d/table, etc.


📦 Installation

pnpm install @m2d/core

or

yarn add @m2d/core

or

npm add @m2d/core

🚀 Usage

import { toDocx } from "@m2d/core";

const docxBlob = await toDocx(mdast, docxProps, sectionProps);

🔌 Plugins

@m2d/core supports both official and community plugins to extend its capabilities. For example:

import { toDocx } from "@m2d/core";
import { imagePlugin } from "@m2d/image";

await toDocx(mdast, docxProps, {
  plugins: [imagePlugin()],
});

🔍 Use only the plugins you need for better performance and bundle size. 🧠 You can use official plugins, or build your own custom ones to keep the bundle size minimal and functionality scoped.

@m2d/core official plugins:

Plugin Package Purpose
HTML @m2d/html Handle raw HTML nodes
Image @m2d/image Embed images in DOCX
Math @m2d/math Render LaTeX math
Table @m2d/table Markdown tables
List @m2d/list Advanced list formatting
Extended MDAST @m2d/mdast Extended mdast types

📜 API

toDocx(astInputs, docxProps, defaultSectionProps, outputType?)

Param Type Description
astInputs Root or { ast: Root; props?: ISectionProps }[] The parsed Markdown AST
docxProps (optional) IDocxProps Document metadata and style
defaultSectionProps (optional) ISectionProps Default layout configuration for sections
outputType (optional) OutputType (defaults to 'blob')

Returns a Promise resolving to a DOCX Blob, Buffer, or Base64 string.

🤖 Generative AI Use-case

AI tools often generate Markdown — @m2d/core helps convert them into rich DOCX reports or presentations. This is useful in:

  • AI-generated blogs, documentation, and research reports
  • Client-side and server-side rendering of AI-generated content
  • Integrating in GenAI pipelines with format export capabilities

💡 Inspiration & Relevance

This library is especially useful in:

  • Generative AI — Convert Markdown outputs (e.g., from ChatGPT, LLMs) to downloadable DOCX reports
  • Developer Tools — Export Markdown-based documentation or changelogs as DOCX
  • Education — Convert notes, quizzes, or assignments authored in Markdown

✅ Works both on client side and server side — offload to browser or use high-performance Node.js.

🛠️ Development

git clone https://github.com/tiny-md/mdast2docx
cd mdast2docx/m2d/core
pnpm install
pnpm dev

📄 License

Licensed under the MPL-2.0 License.


⭐ Support Us

If you find this useful:


Made with 💖 by Mayank Kumar Chaudhari

with @m2d/core, bring structure, style, and extensibility to your Markdown-to-DOCX pipeline.