Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

ksw2000/hackmd-to-html-cli

Repository files navigation

hackmd-to-html-cli

NPM version

Not only is this a CLI tool, but it is also an importable package for converting standard Markdown and even HackMD-supported Markdown into HTML.

Install

# CLI
npm install -g hackmd-to-html-cli
# Package
npm install hackmd-to-html-cli

CLI

$ hmd2html --help
hmd2html --help
Usage: index [options]
Options:
 -v, --version output the current version
 -i, --input <files_or_urls...> the path/url of input markdown files
 -d, --dest <dir> the path of output directory (filename is generated automatically) (default: ./output)
 -o, --output <files...> the path of output file (ignored if the flag -d is set) (default: "")
 -l, --layout <html_file> specify the layout file (default: "")
 -b, --hardBreak use hard break instead of soft break
 -k, --dark use the dark mode layout (activate only if the -l option is not set)
 -h, --help display help for command

Convert

# convert files
$ hmd2html -i file1.md file2.md file3.md
# allow wildcard input
$ hmd2html -i dir/*.md
# allow url input
$ hmd2html -i https://github.com/ksw2000/hackmd-to-html-cli/blob/main/example/index.md
# set output folder
$ hmd2html -i file1.md -d ./my_output
# set the filename of output
$ hmd2html -i file1.md -o file1.html
$ hmd2html -i file1.md file2.md -o file1.html file2.html
# use default darkmode layout
$ hmd2html -i file1.md -k
# use custom layout
$ hmd2html -i hello.md -l ./myLayout.html

Layouts

We provide the two default layouts. Please see layouts here: https://github.com/ksw2000/hackmd-to-html-cli/blob/main/layouts/

  • {{main}} renders main content of markdown.
  • {{lang}} renders lang property if there are yaml metadata about lang in markdown file. e.g. lang="zh-TW"
  • {{dir}} renders dir property if there are yaml metadata about dir in markdown file. e.g. dir="ltr"
  • {{meta}} renders meta tag if there are yaml metadata about title, description, robots orimage. e.g. <meta name="robots" content="noindex">

Example:

<!DOCTYPE html>
<html {{lang}} {{dir}}>
<head>
 {{metas}}
 <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
 <meta charset="utf-8">
 <body>
 {{main}}
 </body>
</html>

There are some features rendered by other dependencies. Thus, in our default layout, we include those dependencies.

Example

CommonJS

const { Converter } = require('hackmd-to-html-cli')
const converter = new Converter();
const res = converter.render("# hello");
console.log(res.main);

ES Module

import { Converter } from "hackmd-to-html-cli"
const converter = new Converter();
const res = converter.render("# hello");
console.log(res.main);

Web

const converter = new window.hmd2html.Converter();
const res = converter.render("# hello");
console.log(res.main);

Support

hmd2html: our tool (the latest)

HackMD Default Converter: The default markdown to html converter provided by HackMD, i.e., download HTML file on HackMD.

HackMD fully supports syntax: features

Features hmd2html HackMD
Default Converter
ToC
Emoji
ToDo list
Code block
- Show line number or not
- Specify the start line number
- Continue line number
Blockquote
- specify your name
- specify time
- color
Render CSV as table
MathJax
Sequence diagrams
Flow charts
Graphviz
Mermaid
Abc
PlantUML
Vega-Lite
Fretboard
Alert Area
Detail
Spoiler container
Headers h1-h6
Horizontal line --- ***
Bold **b** __b__
Italic *i* _i_
Deleted text ~~del~~
Superscript ^sup^
Subscript ~sub~
Inserted text ++ins++
Marked text ==mark==
Ruby case
Typographic
replacements
Blockquotes
List
Tables
Links
Link with title
Autoconverted link
Image
- normal
- with title
- given size
Footnotes
Definition list
Abbreviations

Support Externals

Features hmd2html HackMD
Default Converter
Youtube
Vimeo
Gist
SlideShare
Speakerdeck
PDF
Figma

Support YAML Metadata

Features hmd2html Implementation
title <title></title>
<meta name="twitter:title">
<meta property="og:title">
description <meta name="description">
<meta name="twitter:description">
<meta property="og:description">
robots <meta name="robots">
lang <html lang="">
dir <html dir="">
image <meta property="og:image">
<meta name="twitter:image:src">
others Hide the metadata by html comment

HackMD sets the lang tag and dir tag at the beginning of <body>. hmd2html sets the the lang tag and dir tag at <html> when using default layout.

Development

  1. npm run lint to check the format of source code.
  2. npm run example runs example for this package, which generates result from ./example and places them in ./output.
  3. npm test runs unit test files whose filenames end with .spec.ts

Contributing

Contributions to hackmd-to-html-cli are welcome and highly appreciated. Please run lint npm run lint and test npm run test before pull requesting.

About

A CLI/Package converts HackMD markdown to HTML.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

AltStyle によって変換されたページ (->オリジナル) /