1.0.0 • Published 4 years ago
markdown-to-ansi v1.0.0
markdown-to-ansi
Convert markdown to ansi with support of hyperlinks.
Features
Meant for short snippets of markdown, markdown-to-ansi supports a subset of (GFM) markdown:
- Inline code
- Links. If the terminal does not support hyperlinks, only the url is returned.
- Literal urls. GitHub and npm urls are shortened (see example below).
- Emphasis and strong
- Headings
- Thematic breaks (
---)
Other markdown is simply returned as markdown (not necessarily as-is because it does go through a parser). Pull requests are welcome to support additional markdown syntax. It's easy to extend because markdown-to-ansi is built on the micromark parser and friends.
Usage
This package is ESM-only.
Given an example.md:
## Links
Literal url: https://example.com
Markdown link: [beep](https://example.com)
With formatting: [`boop`](https://example.com)
PR: https://github.com/vweevers/markdown-to-ansi/pull/1
Commit: https://github.com/vweevers/markdown-to-ansi/commit/1234567
Repo: https://github.com/vweevers/markdown-to-ansi
Package: https://www.npmjs.com/package/markdown-to-ansi
---
## Lists, strong and emphasis
- **foo**
- _bar_
- **_baz_**And running the following example.js:
import markdownToAnsi from 'markdown-to-ansi'
import fs from 'fs'
const markdown = fs.readFileSync('example.md', 'utf8')
const transform = markdownToAnsi()
const result = transform(markdown)
console.log(result)Results in:

My terminal doesn't support bold, so let me demonstrate custom styles:
const chalk = require('chalk')
const transform = require('markdown-to-ansi')({
style: {
thematicBreak: chalk.red,
emphasis: chalk.underline,
strong: chalk.red
}
})Results in:

API
transform = markdownToAnsi([options])
Factory that returns a transform function. Options:
stream: stream to detect support of hyperlinks on, defaults tostdoutwidth(number): terminal width, used for thematic breaks, defaults tostream.columnsstyle(object): override one or more styles by providing functions that return a formatted string for:inlineCodeheadingemphasisstrongthematicBreak.
ansi = transform(markdown)
Takes a markdown string, returns a string containing ansi escape sequences.
Install
With npm do:
npm install markdown-to-ansiLicense
MIT © Vincent Weevers