Version 1.2.3
Overview
Updated 5 min ago
@m2d/remark-docx: Unified & Remark compiler plugin that transforms Markdown directly into Microsoft Word (.docx) documents.
✨ Features
- 🔌 Unified & Remark Compiler: Plugs directly into
unified().use(remarkDocx)to compile MDAST syntax trees into Word OpenXML. - 📦 Auto-Injected Plugins: Automatically configures tables, math, lists, images, emojis, and HTML plugins when none are specified.
- 🌐 Isomorphic Execution: Runs in both browser (generating client-side
Blobs) and Node.js (generatingBuffers for file writing). - ⚙️ Configurable Outputs: Supports
"blob","buffer","base64", and"uint8array"formats. - ⚡ Dual Execution APIs: Compatible with both async
.process()and synchronous.processSync()pipelines.
📦 Installation
$ pnpm add @m2d/remark-docx docx unified remark-parse remark-gfmor
$ npm install @m2d/remark-docx docx unified remark-parse remark-gfmor
$ yarn add @m2d/remark-docx docx unified remark-parse remark-gfm🚀 Quick Start
Browser (Download as DOCX)
import { unified } from "unified";
import remarkParse from "remark-parse";
import remarkGfm from "remark-gfm";
import { remarkDocx } from "@m2d/remark-docx";
const processor = unified()
.use(remarkParse)
.use(remarkGfm)
.use(remarkDocx, "blob");
const file = await processor.process("# Hello World\n\nExported directly to Word!");
const blob = (await file.result) as Blob;
// Trigger browser download
const url = URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
link.download = "document.docx";
link.click();
URL.revokeObjectURL(url);Node.js (Write to Disk)
import fs from "node:fs/promises";
import { unified } from "unified";
import remarkParse from "remark-parse";
import remarkGfm from "remark-gfm";
import { remarkDocx } from "@m2d/remark-docx";
const processor = unified()
.use(remarkParse)
.use(remarkGfm)
.use(remarkDocx, "buffer");
const file = await processor.process("# Server Report\n\nWritten via Node.js.");
const buffer = (await file.result) as Buffer;
await fs.writeFile("report.docx", buffer);⚙️ Plugin Signature
import { OutputType } from "docx";
import { IDocxProps, ISectionProps } from "mdast2docx";
remarkDocx(
outputType?: "blob" | "buffer" | "base64" | "uint8array", // Default: "blob"
docxProps?: IDocxProps, // Global Word document options
sectionProps?: ISectionProps, // Section margins, headers, and plugins
pluginProps?: { // Options passed to auto-injected plugins
table?: TablePluginOptions;
list?: ListPluginOptions;
mermaid?: MermaidPluginOptions;
image?: ImagePluginOptions;
emoji?: EmojiPluginOptions;
}
);📚 Deep Dive Guides
- 🔌 Unified Pipeline Integration Guide: Architecture, plugin auto-injection, and manual plugin overrides.
- 💾 Output Formats & Environments Guide: Browser downloads, server writing, sync execution, and binary output types.
License
This library is licensed under the MIT open-source license.
with 💖 by Mayank Kumar Chaudhari