Skip to content

aliezzahn/rs-markdown-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

10 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ rs-markdown-parser

A blazing-fast Node.js module for converting Markdown to HTML โ€” powered by Rustโ€™s pulldown-cmark and Neon for seamless Node integration.


โœจ Features

  • โšก Ultra-fast conversion using Rustโ€™s performance and pulldown-cmark.
  • ๐Ÿงฉ Optional GitHub Flavored Markdown (GFM) support โ€” tables, footnotes, strikethrough, task lists, and heading attributes.
  • ๐Ÿ“ฆ ES module export โ€” easily import HTML in your frontend projects.
  • ๐Ÿ›ก๏ธ TypeScript ready โ€” includes full type definitions.

๐Ÿ“ฆ Installation

npm install rs-markdown-parser

๐Ÿ’ก Note: To modify or rebuild the native module, follow the build instructions below.


๐Ÿ› ๏ธ Building the Module

If you're editing the Rust source or cross-compiling, use one of the following scripts:

Mode Command Notes
Debug npm run debug Fast builds for development
Release npm run build Optimized builds for production
Cross-build npm run cross Build for other target platforms

The build will generate a native Node.js addon (index.node).


๐Ÿš€ Usage

Importing the Module

JavaScript

const { processMarkdown } = require("rs-markdown-parser");
const { join } = require("path");

const filePath = join(__dirname, "test.md");
const result = processMarkdown(filePath, false);

console.log(result); // => export default `<html_content>`;

TypeScript

import { processMarkdown } from "rs-markdown-parser";
import { join } from "path";

const filePath: string = join(__dirname, "test.md");
const result: string = processMarkdown(filePath, false);

console.log(result); // => export default `<html_content>`;

๐Ÿงช Example

Sample Markdown (test.md)

# Hello, World!

This is a **Markdown** file.

- Item 1
- Item 2

# Product Comparison

| Product      | Price   | Features                   | In Stock |
|--------------|---------|----------------------------|----------|
| Phone A      | $299    | 64GB, 12MP Camera, 4G LTE  | Yes      |
| Phone B      | $399    | 128GB, 48MP Camera, 5G     | No       |
| Phone C      | $499    | 256GB, 108MP Camera, 5G    | Yes      |

Output (ES Module String)


๐Ÿงฌ GitHub Flavored Markdown (GFM)

Enable extended Markdown features with the gfm flag:

const result = processMarkdown(filePath, true);

Supported GFM features:

  • โœ”๏ธ Task lists
  • ๐Ÿ“‘ Footnotes
  • ๐Ÿ”ก Strikethrough (~~text~~)
  • ๐Ÿงฎ Tables
  • ๐Ÿท๏ธ Heading attributes (## Title {#id})

๐Ÿ”ท TypeScript Support

This module includes index.d.ts for full TypeScript support. To use:

  1. Ensure TypeScript is installed:

    npm install --save-dev typescript
  2. Import the module as usual. Type definitions are automatically applied.


๐Ÿงช Development & Testing

Run tests:

npm run test

Rebuild after source changes:

  • Edit Rust: src/lib.rs
  • Edit Types: index.d.ts

Then:

npm run debug
# or
npm run build

๐Ÿ“„ License

MIT License โ€” see LICENSE.


๐Ÿค Contributing

Contributions welcome! Please open an issue or PR:

๐Ÿ‘‰ GitHub Repository


๐Ÿž Issues & Support

Found a bug or need a feature?

๐Ÿ“ฌ Report it on GitHub Issues

๐Ÿ‘ฅ Contributors

Thanks to these awesome people for their work on this project:

aliezzahn
aliezzahn
0xre2a
0xre2a
morihn
morihn

About

A Node.js module for converting Markdown files to HTML using Rust

Topics

Resources

License

Stars

26 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages