node package manager

paperpress

A static pages generator for Node.js.

Paperpress

Paperpress is a static pages generator for Nodejs.

This library will allow you to have a blog or static pages in markdown/html on top of any application with express, koa or any other Node.js http server.

For feature request, contact @Siedrix on twitter or github.

Paperpress will convert a directory structure of markdown files into items that you can use in your application. This items will be sorted in collections.

npm install paperpress

Create a Paperpress instance

var Paperpress = require('paperpress')
 
var paperpress = new Paperpress({
  baseDirectory: 'static'
})
 
paperpress.load()

Use baseDirectory to specify where are your Paperpress files. Default value is static

Then you can use the items in a express app like this:

app.get('/blog', function (req, res) {
  var articles = paperpress.getCollection('articles')
 
  res.render({articles:articles})
})

For more information check the examples.

Warning: Load function is a sync function.

Paperpress use Remarkable to parse the markdown files. You can use remarkableOptions to specify your custom options.

var Paperpress = require('paperpress')
 
var paperpress = new Paperpress({
  remarkableOptions: {/* Your Remarkable options */}
})

The default value is:

{
  html: true,
  linkify: true,
  highlight: function (code) {
    return highlighter.highlightAuto(code).value
  }
}

Paperpress structure

Paperpress has 3 concepts: Collections, Items and Hooks.

This are folders located directly under the baseDirectory and help organice our items in diferent groups.

Suggested directories:

  • /articles this folder will contain all the blog posts of the application.
  • /pages this folder will contain all the pages of the application.
  • /snippers this folder will contain all the snippets of the application, usually single files.

Inside each of your collection folders you can have 2 diferent types of items, the once based on a directory structure and the once based on a single markdown file.

  • info.json This file needs to have title and date.
  • content.md This is the main content of the article, it should be written in mark up.
  • [ITEM_NAME].md This file will be converted into an item with title, slug, path and content.

The reason to have a the directory style is to allow more configuration, since you can add any atributes that you want to the info.json file and to modify a path or slug in a particular way.

You can declare hooks to modify the items after they are loaded.

var paperpress = new Paperpress({})
 
paperpress.addHook(function (item) {
  item.loadDate = new Date()
})
var articles = paperpress.getCollection('articles')
var pagesAndSnippets = paperpress.getCollections(['pages', 'snippets'])
var items = paperpress.items.find(function(item){
  return item.path === '/home'
})

License

Released under the MIT license.