npm.io
0.1.3 • Published 16h ago

@mdast2docx/table

Licence
MIT
Version
0.1.3
Deps
1
Size
7 kB
Vulns
0
Weekly
0
Stars
1

@m2d/table

CI codecov npm version npm downloads npm bundle size license

@m2d/table: Markdown Table formatting plugin for @m2d/core. Renders rich, customizable Word tables with column alignment, borders, cell shading, and repeating headers.


Features

  • Native Word Tables: Converts Markdown GFM tables into clean docx.Table elements with authentic Word OpenXML borders and paddings.
  • Automatic Column Alignment: Honors Markdown column alignments (left, center, right) with fallback defaults.
  • Rich Cell Styling: Style headers and data cells with background fills (shading), custom typography (fonts, sizes, colors), and paragraph spacing via the data option.
  • Multi-Page Header Repetition: Automatically repeats header rows across page breaks (tableHeader: true).
  • Block Content in Cells: Seamlessly accommodates nested paragraphs, lists, code snippets, and blockquotes inside table cells (ideal when paired with @m2d/html).

Installation

This package (@mdast2docx/table) is an official alias of @m2d/table.

Why does this exist?

We provide this package to offer shorter import paths and improved discoverability. While both packages provide identical functionality, @m2d/table is the primary source of truth.

Which one should I use?
  • Use @mdast2docx/table if you prefer the shorter name or specific branding or ESM Only.
  • Use @m2d/table for the most stable long-term reference and standard alignment.
Feature @m2d/table @mdast2docx/table
Source Code Primary Proxy
Updates Immediate Synchronized (Immediately)
Bundle Size 100% 100% (Zero overhead)
Format ESM + CJS ESM Only
Maintenance Primary Proxy (inherits)
Security Primary Proxy (inherits)
Maintenance & Support

Security: Security audits are performed on the canonical package; this alias inherits all security patches automatically.


$ pnpm add @m2d/table @m2d/core docx

or

$ npm install @m2d/table @m2d/core docx

or

$ yarn add @m2d/table @m2d/core docx

Quick Start

import { toDocx } from "@m2d/core";
import { tablePlugin } from "@m2d/table";
import remarkGfm from "remark-gfm";
import remarkParse from "remark-parse";
import { unified } from "unified";

const markdown = `
# Quarterly Summary

| Quarter | Revenue | Growth | Status |
| :------ | :-----: | -----: | :----: |
| Q1      | $1.2M   | +12%   | Active |
| Q2      | $1.5M   | +25%   | Active |
| Q3      | $1.8M   | +20%   | Active |
`;

const mdast = unified().use(remarkParse).use(remarkGfm).parse(markdown);

const docxBlob = await toDocx(mdast, {}, {
  plugins: [tablePlugin()],
});

Plugin Options

import { AlignmentType, ShadingType, VerticalAlignTable } from "docx";

tablePlugin({
  // Table level properties (width, margins, borders)
  tableProps: { ... },

  // General row properties
  rowProps: { cantSplit: true },

  // First row (header) properties
  firstRowProps: { tableHeader: true },

  // Header cell styling
  firstRowCellProps: {
    shading: { type: ShadingType.SOLID, fill: "1E293B" },
    data: { bold: true, color: "FFFFFF", alignment: AlignmentType.CENTER },
  },

  // Body cell styling
  cellProps: {
    data: { size: 20, font: "Segoe UI" },
  },

  // Alignment configuration
  alignments: {
    preferMdData: true,
    defaultHorizontalAlign: AlignmentType.LEFT,
    defaultVerticalAlign: VerticalAlignTable.CENTER,
  },
});

Deep Dive Guides


License

This library is licensed under the MIT open-source license.


with by Mayank Kumar Chaudhari

Keywords