panda-docs
v0.4.7
Published
A complete documentation generation tool for Markdown files
Downloads
47
Readme
Panda
A total documentation build system for technical writers, and those who want to be like them.
What's black and white and read all over?
This is a documentation build system that takes Markdown files as sources, and produces HTML files. It runs on Node.js, and uses Jade as its templating engine.
A lot of the concepts are based on maximebf's "beautiful-docs", but there are so many differences--the most notable being that this is in Javascript, not Coffeescript--that I decided to turn it into a complete fork.
Features
- Markdown syntax, the NAMP module. NAMP supports:
- The standard Gruber syntax
- The GitHub Flavored Markdown syntax (including language-specific codeblock fences)
- The PHP Markdown Extra syntax
- Maruku meta-data support
- Support for content references (conrefs) in Markdown
- Inline metadata support (something Maruku does not do)
- Strikethroughs
- Conversion of
Note:
,Tip:
, andWarning:
blocks into Twitter Bootstrap alert blocks - Build-time highlighting of
<pre>
code blocks For more information, check out the NAMP documentation.
- Pass in individual files or entire directories
- Embeddable metadata
- Easy template customization (via Jade)
Installation
Make sure you have a recent build of Node.js (this was tested on v0.6.0). Install it using npm:
npm install panda-docs -g
Want to try a demonstration? Then clone this repository, and run
node bin/panda src/manifest.json
That'll turn this README into a better looking HTML file in the /out directory.
Usage
panda _[options]_ [/path/to/manifest.json] _[/path/to/output/dir]_
Of these, [options] and [/path/to/output/dir] are optional--but the manifest.json file is mandatory. The default output directory here is ./out.
You can find out more information on options you can use below:
Manifest Files
A manifest file is a mandatory JSON file that indicates where your source files reside, as well as specifing customization options for your documentation pages.
A manifest file can have the properties listed below. All the properties are optional, with the exception of files
.
title
: The title of the documentation (defaults to "Documentation")files
: An array defining the path to your filesextension
: The extension of your Markdown files. Some people use.md
, others.markdown
, and still others.text
. This is optional, and defaults to.md
.home
: The file to display as the manual homepage (this won't show up in the TOC)category
: Category of the manual (used on the homepage) (defaults to nothing)css
: An absolute URL to a CSS stylesheet that will be included in every pagecodeHighlightTheme
: The name of the highlightjs theme to use for code highlighting (defaults to 'github')embedly
: Activate embedly by passing in your API key. Links to embedly must be placed alone in a paragraph.github
: Theusername/repo
on GitHub that's used to link through with the "Fork me on Github" banner. If this is omitted, then there's no banner.]
As noted above, files can either be absolute URIs, or relative to the manifest file. For example:
{
"files": ["README.md", "../../someFile.md"]
}
Options
There are a number of arguments you can pass to Panda that affect the entire build. They are:
-h, --help
: Display the help information-t, --title
: Title of the page [Panda: Default Title Here]--template
: The location of your Jade templates [./templates/default]. You should set this.--assets
: The location of your assets (CSS, Javascript) [./templates/default/assets]. You should set this.--noheader
: Hides the header--notoc
: Hides the table of contents sidebar--baseurl
: Base URL of all links
Jade templates
You'll must have at least one Jade file called layout.jade in your /templates directory. This acts as the base template for all your generated files.
Within your Jade template, you have access to the following variables:
content
is the transformed HTML content of your Markdown filemetadata
is an object containing your document-based metadata valuesmanifest
is an object containing the Manifest.json propertiesoptions
is an object containing your passed in properties