Markpress

Markpress npm badge Build Status node GitHub stars GitHub followers

markpress is a command line tool and node package to convert markdown files into self-contained impressjs html presentations. It was initially inspired and based on markdown-impress by steel1990.

This is the outcome of feeding this very README.md to markpress: $ markpress README.md

You'll need node version >= 5.0.0 installed on your system.

$ npm install -g markpress (globally)

or

$ npm install markpress (for the current folder only)

$ markpress <input file> [output file] [options]

If no output file is passed, the input's filename will be used with .html extension.

More information: $ markpress -h

See Examples section for more.

const fs = require('fs');
const markpress = require('markpress');
const options = { ... };
markpress('input.md', options).then(({html, md}) => {
  fs.writeFileSync('output.html', html);
});
 
// or you can pass the Markdown content directly as parameter 
markpress('# Markdown content \n > Blockquote', options).then(({html, md}) => {
  fs.writeFileSync('output.html', html);
});

The options precedence is as follows (higher in the least means higher precedence):

Default: false

Automatically create a slide for every H1 (# Heading 1) level element (if ------ are present will be removed and ignored)

Default: horizontal

Automatically generate the layout for the slides. This option will be ignored if any HTML comment specifying slide positioning attributes is found, so please remove all slide-positioning comments (<!--slide-attr ... -->) from the markdown file if you want to use this feature. Available Layouts:

Default: false

By default, markpress will try to embed (using base64 encoding) the referenced images into the HTML so they will be available offline and you will not have problems moving the HTML to other folders. This feature will be disabled if --no-embed is set to true.

Default: false (dangerous HTML & scripts allowed)

Disallow embedding of dangerous HTML code in the Markdown file. You should leave it disabled if you want to use custom <style> tags, embed videos, etc.

--silent Will silence all console output in the Terminal. {verbose: true} will enable all console output.

Default (CLI): silence: false (all console output enabled by default)

Default (module): verbose: false (all console output disabled by default)

Default: light

Chose from the different available themes:

Default: false

Embed the markpress options into the .md file for portability. Warning: it will override any existing options.

Start edit mode. This will start an embedded web server to preview the resulting HTML with live refresh upon input file change. Press ctrl+c to stop the server.

$ node --harmony ./bin/markpress.js input.md

$ node debug --harmony ./bin/markpress.js input.md

npm link

npm install . -g

An String with either:

An Object containing the options as specified in the Options section

A Promise which will call it's resolve method with an Object with two properties:

Note that you can use ES6 destructuring to simulate Python's named parameters in JS.

const fs = require('fs');
const markpress = require('markpress');
const options = {
  layout: 'horizontal',
  theme: 'light',
  autoSplit: true,
  allowHtml: false,
  verbose: false,
  title: 'Optional <title> for output HTML'
}
// Simulating named parameters through destructuring 
markpress('input.md', options).then(({html, md}) => {
  fs.writeFileSync('output.html', html);
  // if `md` is defined it contains the markdown content with embedded options (see --save option) 
});
 
// or you can pass the Markdown content directly as parameter 
 
markpress(
  '# This is markdown content \n > Test Blockquote',
  options
).then(({html, md}) => {
  fs.writeFileSync('output.html', html);
});

Roadmap of planned features can be found here. Suggestions are welcome.

Please see CONTRIBUTING.md