Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.




pub-server, or pub for short is an HTML generator+editor entirely written in javascript.

The following use-cases are supported

  • Command-line tool for generating static websites
  • Web server for previewing generated HTML locally
  • Web server deployed on a PaaS like Heroku

For users with node.js, pub-server provides a simple command-line utility which can render an HTML website from markdown in any directory. The generated output uses npm-installable themes and is fully customizable.

The generator+editor can also run in-browser, allowing non-technical users to edit and instantly preview the generated HTML, without first installing pub-server themselves.

To see this in action, check out the docs at http://jldec.github.io/pub-doc/. The editor appears when you click on the edit button at the top right. Feel free to play around - in this instance, your changes will not be recorded.

Other examples include a presentation theme, a flexbox design, and a blog


pub-server is usable today by anyone comfortable using GitHub and command line tools, to publish high-quality HTML content with custom designs.

near-term backlog

  • Improved documentation (better doc published 2015-10-26)
  • Fix editor to work on mobile devices
  • Self-service GitHub Pages workflow with save and re-publish
  • Basic form processing api
  • Dropbox interface for images
  • Single-page website theme
  • More complete blog theme

medium-term backlog

  • Single-file pub format with integrated pub-config
  • Photo-centric consumer publishing workflow
  • Private publishing
  • Atom editor plugin for designers
  • Windows support
  • npm v3 support
  • HTTPS hosting

longer-term backlog

  • WYSIWYG editor based on Prosemirror
  • v2 architecture: React/Redux + Webpack
  • Modern designs for presentations with vector graphics and data-integration
  • Next-gen interactive designs, games, animations
  • Online editing of javascript, html, css/less


using pub-server requires node.js or io.js.

npm install -g pub-server

OSX and Linux are working, Windows support is coming - PRs welcome.


  • pub (with no options) serves *.md in the current directory or looks for a pub-config.js. The default theme is useful for previewing GitHub README.md files like this one. The server will watch for changes and update http://localhost:3001/ whenever markdown files or CSS or other static files are saved.

  • pub -O generates .html and other static files (including generator + editor) to ./out.

  • pub -S <dir> serves static files from any directory. It will mimic the behavior of GitHub Pages, looking for index.html files in folders, and redirecting from /folder-name to /folder-name/

  • pub -h shows the usage info below:

pub-server v1.9.21

usage: pub [opts] [dir]
  -h, --help               output usage information
  -p, --port <port>        server port [3001]
  -t, --theme <name>       theme module-name or dir, repeatable
  -o, --output-path <dir>  output dir [./out]
  -O, --output-only        output html, scripts, static files and exit
  -G, --html-only          output generated html files and exit
  -r, --root <prefix>      generate /prefix urls, "." means path relative
  -s, --static <dir>       static dir, repeatable, supports <dir>,<route>
  -S, --static-only <dir>  serve only static files from <dir>
  -C, --config             show config and exit
  -I, --ignore-config      ignore pub-config file
  -P, --pages              show pages and templates and exit
  -w, --watch-pkgs         also watch inside packages
  -W, --no-watch           disable watcher entirely
  -K, --no-sockets         no websockets
  -E, --no-editor          website only, no editor
  -m, --minify             minify scripts
  -d, --dbg                enable scriptmaps and client-side debug traces
  -D, --debug              node --debug (server and client-side)
  -B, --debug-brk          node --debug-brk (server and client-side)


Major dependencies include:

npm ls will list them all.