Skip to content

hilja/barkdown

Repository files navigation

Barkdown

A small but capable Markdown parser. Spiritual successor to Snarkdown. At least that was my goal in the beginning. Scope-creep is real and now it's fully CommonMark compliant, but it's still relatively small, but def not 1kb like SnarkDown.

Goals

  • Small Markdown parser with no deps: 9.12 kB minified and gzipped
  • Full CommonMark spec coverage
  • Trusted Markdown in, trusted HTML out: always sanitize your inputs (good light-weight sanitizer: unsane)
  • Single file: copy it to your project and add features or remove things you don't need

Features

  • Passes the full CommonMark test suite
  • Open links to black by setting targetBlank option. It add target="_blank" rel="noreferrer" attributes to links

Usage

Not in npm yet, but soon.

import { barkdown } from '@hil/barkdown'

const html = barkdown('Foo [bar](/bar)', {
  targetBlank: true, // Default false, open links to target _blank
})

To do

  • Make it pluggable
    • Tables
    • Task lists
    • Strike through
    • Definition lists
  • Try to make it smaller
  • Add an option to provide a proper html entity encoder

If you find any quirks or want some features please open an issue or drop a pr.

Development

There are two sets of tests:

  • pnpm test:common runs the CommonMark test suite, uses a custom reporter
  • pnpm test:unit runs the in-source unit tests in index.ts

About

10kB CommonMark compatible Markdown parser

Resources

Stars

Watchers

Forks

Contributors