Exciting news!Announcing our $4.6M Series Seed. Learn more
Socket
LoveBlogFAQ
Install
Log in

hubdown

Package Overview
Dependencies
13
Maintainers
2
Versions
13
Issues
File Explorer

Advanced tools

hubdown

Convert markdown to GitHub-style HTML using a common set of remark plugins

    2.6.0latest

Version published
Maintainers
2
Yearly downloads
30,386
decreased by-81.81%

Weekly downloads

Changelog

Source

v2.6.0

2.6.0 (2020-05-12)

Features

  • add ignoreMissing option to allow skip valid language checking (#27) (3cd4177)

Readme

Source

hubdown

CircleCI build status

Convert markdown to GitHub-style HTML using a common set of remark and rehype plugins

Used by electron/i18n and electronjs.org.

unified processes content with syntax trees and transforms between different formats. remark and rehype are its markdown and HTML ecosystems. We use this because its performant and has a large collection of plugins. Primarily, unlike some other node markdown parsers that provide syntax highlighting capabilities, unified does not have any native C++ dependencies. This makes it easier to install and reduces the likelihood of system-dependent installation failures.

Plugins

The following remark and rehype plugins are used by hubdown:

Installation

npm install hubdown --save

Usage

hubdown exports a single function that returns a promise:

const hubdown = require('hubdown') hubdown('I am markdown').then(doc => { console.log(doc) })

The resolved promise yields an object with a content property containing the parsed HTML:

{ content: '<p>I am markdown</p>' }

Usage with Cache

hubdown's remark markdown parser is pretty fast, but things can start to slow down when you're processing hundreds or thousands of files. To make life easier in these situations you can use hubdown's optional cache, which stores preprocessed markdown for fast retrieval on subsequent runs.

To use the cache, bring your own level instance and supply it as an option to hubdown. This helps keep hubdown lean on (native) dependencies for users who don't need the cache.

const hubdown = require('hubdown') const cache = require('level')('./my-hubdown-cache') hubdown('I will be cached.', { cache }).then(doc => { console.log(doc) })

API

hubdown(markdownString[, options])

Arguments:

  • markdownString String - (required)
  • options Object - (optional)
    • runBefore Array of remark plugins - Custom plugins to be run before the commonly used plugins listed above.
    • frontmatter Boolean - Whether or not to try to parse YML frontmatter in the file. Defaults to false.
    • cache LevelDB - An optional level instance in which to store preprocessed content. See Usage with Cache.
    • highlight - Object of rehype-highlight options.

Returns a promise. The resolved object looks like this:

{ content: 'HTML goes here' }

If YML frontmatter is parsed, those properties will be present on the object too:

{ title: 'The Feminine Mystique', author: 'Betty Friedan', content: '<p>The Feminine Mystique is a book written by Betty Friedan which is widely credited with sparking the beginning of second-wave feminism in the United States.</p>' }

Tests

npm install npm test

License

MIT

Socket

Product

Subscribe to our newsletter

Get open source security insights delivered straight into your inbox. Be the first to learn about new features and product updates.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc