Code Monkey home page Code Monkey logo

paperpress's Introduction

Build Status Coverage Status Dependency Status NPM version

Paperpress is a static pages generator for Nodejs.

NPM

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.

TL;DR

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.

Install

npm install paperpress

Basic usage

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.

Markdown parser

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.

Collections

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.

Items

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.

Items as directory

  • 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.

Items as file

  • [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.

Hooks

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

var paperpress = new Paperpress({})

paperpress.addHook(function (item) {
  item.loadDate = new Date()
})

Useful snippets for paperpress

Find all items in a collection
var articles = paperpress.getCollection('articles')
Find all items in multiple collections
var pagesAndSnippets = paperpress.getCollections(['pages', 'snippets'])
Find one item in paperpress
var items = paperpress.items.find(function(item){
  return item.path === '/home'
})

Collaborators

Released under the MIT license.

paperpress's People

Contributors

kinduff avatar markotom avatar rog avatar siedrix avatar

Watchers

 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.