@md-plugins/md-plugin-table
@md-plugins/md-plugin-table
A Markdown-It plugin that customizes the rendering of tables in Markdown. This plugin allows developers to style and structure tables with additional attributes, making them more visually appealing and compatible with design systems.
Features
- Adds customizable CSS classes to
<table>,<thead>,<tbody>,<tr>,<th>, and<td>elements. - Supports custom attributes for
<table>elements. - Replaces the default
<table>tag with a configurable custom tag (e.g.,q-markup-table). - Flexible configuration for adapting to different frameworks or design systems like Quasar.
Installation
Install the plugin via your preferred package manager:
# with pnpm:
pnpm add @md-plugins/md-plugin-table
# with bun:
bun add @md-plugins/md-plugin-table
# with Yarn:
yarn add @md-plugins/md-plugin-table
# with npm:
npm install @md-plugins/md-plugin-table
Usage
Basic Setup
import MarkdownIt from 'markdown-it'
import { tablePlugin } from '@md-plugins/md-plugin-table'
const md = new MarkdownIt()
md.use(tablePlugin, {
tableClass: 'custom-table-class',
tableToken: 'custom-table-tag',
tableAttributes: [
[':wrap-cells', 'true'],
[':flat', 'true'],
],
})
const markdownContent = `
| Header 1 | Header 2 |
|----------|----------|
| Cell 1 | Cell 2 |
| Cell 3 | Cell 4 |
`
const renderedOutput = md.render(markdownContent)
console.log('Rendered Output:', renderedOutput)
Example Output
For the example above, the plugin produces the following output:
<custom-table-tag class="custom-table-class" :wrap-cells="true" :flat="true">
<thead>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
</tr>
<tr>
<td>Cell 3</td>
<td>Cell 4</td>
</tr>
</tbody>
</custom-table-tag>
Options
The md-plugin-table plugin supports the following options:
| Option | Type | Default | Description |
|---|---|---|---|
| tableClass | string | 'markdown-table' | CSS class for the <table> or custom tag. |
| tableToken | string | 'q-markup-table' | Tag name to replace the default <table> tag. |
| tableAttributes | Array | [] | Array of attribute name-value pairs for the table. |
| tableHeaderClass | string | 'text-left' | CSS class for <th> elements. |
| tableRowClass | string | '' | CSS class for <tr> elements. |
| tableCellClass | string | '' | CSS class for <td> elements. |
Advanced Usage
Custom Styling
Apply custom styling to tables by defining your own classes:
md.use(tablePlugin, {
tableClass: 'custom-table',
tableHeaderClass: 'custom-header',
tableRowClass: 'custom-row',
tableCellClass: 'custom-cell',
})
Renered output:
<q-markup-table class="custom-table">
<thead>
<tr class="custom-row">
<th class="custom-header">Header 1</th>
<th class="custom-header">Header 2</th>
</tr>
</thead>
<tbody>
<tr class="custom-row">
<td class="custom-cell">Cell 1</td>
<td class="custom-cell">Cell 2</td>
</tr>
</tbody>
</q-markup-table>
Custom Attributes
Add attributes for frameworks like Quasar:
md.use(tablePlugin, {
tableAttributes: [
[':bordered', 'true'],
[':flat', 'true'],
],
})
Rendered output:
<q-markup-table class="markdown-table" :bordered="true" :flat="true"> ... </q-markup-table>
Testing
Run the unit 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-table 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.
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