Giter VIP home page Giter VIP logo

minidocs's Introduction

minidocs

NPM version js-standard-style

build a minimalist site for your documentation

This module generates a documentation site from two simple components:

  1. A collection of markdown documents
  2. A hierarchical object specifying your table of contents

This module is intentionally simpler and more opinionated than something like Jekyll or Sphinx. Depending on what you're looking for, that might be good, because it's easier to reason about, or bad, because it's less flexible! It'll probably be most useful if your documentation already consists entirely of markdown files, and it composes well with any tools that generate markdown, for example ecosystem-docs, which pulls README files from a collection of GitHub repositories.

Sites can be built using a command-line tool, or using the library as a module with browserify. There are options for specifying a project logo, custom css, and other basic formatting. Support for themes coming soon!

PRs welcome!

live demo

install

command-line

Install as a command-line tool

npm install -g minidocs

library

Add to your project with

npm install --save minidocs

example

command-line

Just specify the location of your markdown files, the table of contents, the output location, and build the site

minidocs docs/ --contents contents.json --output site/

The folder site will now contain the html js and css for your site.

library

Specify a table of contents

var contents = {
  'overview': {
    'about': 'about.md'
  },
  'animals': {
    'furry': {
      'sheep': 'sheep.md'
    },
    'pink': {
      'pig': 'pig.md'
    }
  }
}

Then build the site and add it to the page with

var minidocs = require('minidocs')
var include = require('include-folder')

minidocs({
  contents: contents,
  markdown: include('./markdown')
})

This assumes you have the files about.md, sheep.md, and pig.md inside a local folder markdown.

To run this in the browser you'll need two browserify transforms:

  • folderify, to transform the call to the include-folder module into an object with all your markdown files
  • brfs, to transform fs.readFileSync('./styles.css') into a string with the contents of that file

To run a full example, clone this repository, go into the folder example then call

npm install
npm start

usage

command-line

Usage:
  minidocs {sourceDir} -c {contents.json} -o {buildDir}

Options:
  * --contents, -c     JSON file that defines the table of contents
  * --output, -o       Directory for built site [site]
  * --title, -t        Project name [name of current directory]
  * --logo, -l         Project logo
  * --css              Optional stylesheet
  * --help, -h         Show this help message

library

require('minidocs')(opts)

Where opts is an object that can specify the following options

  • contents object with the table of contents, required
  • documents array of markdown files, required
  • styles a stylesheet, if not required will only use base styles
  • logo relative file path to a logo file, if unspecified will not include a logo
  • initial which document to show on load, if unspecified will load the first document
  • root a DOM node to append to, if unspecified will append to document.body

license

MIT

minidocs's People

Contributors

freeman-lab avatar sethvincent avatar fraserxu avatar

Watchers

James Cloos avatar Shyamal Suhana Chandra avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.