Package Exports
- @verikami/remark-deflist-revisited
Readme
@verikami/remark-deflist-revisited
A wrapper around remark-deflist with improved support for nested definition lists.
It preserves all the original functionality by installing this module as a dependency.
Installation
ツ pnpm add @verikami/remark-deflist-revisited
ツ npm i @verikami/remark-deflist-revisitedUsage
The problem with remark-deflist
The plugin renders nested list items inside <dd> incorrectly.
Markdown
Term
: - item A
- item B
- item CWith remark-deflist
<dl>
<dt> Term </dt>
<dd>
<ul>
<li> item A </li>
</ul>
</dl>
<ul>
<li> item B </li>
<li> item C </li>
</ul>With @verikami/remark-deflist-revisited
<dl>
<dt>Term</dt>
<dd>
<ul>
<li> item A </li>
<li> item B </li>
<li> item C </li>
</ul>
</dl>Notes
- Using
: *as a list marker (especially for the first item) is still causing errors. - Using
: - *x*or: - **x**is not problematic.
Usage in Node.js
import { remark } from "remark";
import html from "remark-html";
import deflist from "@verikami/remark-deflist-revisited";
let markdown;
let output;
markdown = `
Term
: - item A
- item B
- item C
`;
output = await remark().use(deflist).use(html).process(markdown);
console.log(String(output));
/* ------------------------------------------
<dl><dt>Term</dt><dd><ul>
<li>item A</li>
<li>item B</li>
<li>item C</li>
</ul></dd></dl>
------------------------------------------ */
markdown = `
Term
: - **item** A
- **item** B
- **item** C
`;
output = await remark().use(deflist).use(html).process(markdown);
console.log(String(output));
/* ------------------------------------------
<dl><dt>Term</dt><dd><ul>
<li><strong>item</strong> A</li>
<li><strong>item</strong> B</li>
<li><strong>item</strong> C</li>
</ul></dd></dl>
------------------------------------------ */
Usage in Astro
import remarkDeflist from "@verikami/remark-deflist-revisited";
export default defineConfig({
markdown: {
remarkPlugins: [
remarkDeflist
]
}
});API
deflistWithLists()
Returns
Transformer— a unified transformer function
Example
function deflistWithLists(): Transformer
remark().use(deflistWithLists)Processing Flow
Markdown
│
Plugin (patched deflist)
│
HTML // AST
│
Snapshots (Vitest)
│
Build (dist)
│
CI/CD (GitHub Actions)
│
┌─────────┬────────────┬─────────┐
│ NPM │ GitHub │ JSR │
│ │ Packages │ │
└─────────┴────────────┴─────────┘License
Original work — MIT © Alex Shaw
MIT © veriKami