mightymite

0.4.5 • Public • Published

Mightymite

A tiny (yet mighty) markdown-based content store and API.

Why?

I needed a dead-simple database-less API for accessing content written in markdown with YAML front-matter, that also handles the compilation into JSON and parsing of markdown into HTML. The file-based nature of the API lends itself to hosting anywhere static files may be hosted.

How it works

Content is organized as index.md files within /content, in a hierarchy of directories that will map to the client application routes. Each file is parsed as YAML/markdown, with the body compiled as HTML, and output as JSON to /api.

To avoid unnecessary imports on the client side, documents may import certain collections of other files at compilation time using an import syntax. For instance, you may want to include a limited set of attributes from the latest n blog posts on the home page.

Beyond that, any front-mattter attributes will be available under attributes, and the body HTML will be available at body.

Installation

$ yarn add mightymite # or npm install mightymite 

Usage

# View commands and options 
$ mightymite --help
 
# Build 
$ mightymite build
 
# Rebuild on file change 
$ mightymite watch
 
# Specify source or output directories other than the defaults 
$ mightymite build --src src --out dist
$ mightymite watch --src src --out dist

Configuration

You may use a custom config file by passing along the config flag:

$ mightymite build --config mightymite.json

And in mightymite.json:

{
  "debug": "true",
  "src": "src",
  "out": "dist"
}

Import syntax

Content from additional files may be imported using the import attribute:

# /content/index.md 
title: Home
 
_import:
  posts:
    match:
      - 'news/**/index.md'
      - '!news/index.md'
    order: date
    sort: desc
    limit: 5
    body: true
    attributes:
      - title
      - date

Data files

Any .yaml files within the content directory will be converted to JSON and moved to their corresponding location in the output directory. Imports are supported.

# /data.yaml 
 
title: My Site
 
# Let's import the description from the about page 
_import:
  about:
    match: '/about/index.md'
    attributes:
      - description

Routes file

A register of all routes are published to the output directory in routes.json.

Readme

Keywords

none

Package Sidebar

Install

npm i mightymite

Weekly Downloads

28

Version

0.4.5

License

MIT

Unpacked Size

145 kB

Total Files

17

Last publish

Collaborators

  • elcontraption