0.4.5 • Published 6 years ago

mightymite v0.4.5

Weekly downloads
110
License
MIT
Repository
github
Last release
6 years ago

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.

0.4.5

6 years ago

0.4.4

6 years ago

0.4.3

6 years ago

0.4.2

6 years ago

0.4.1

6 years ago

0.4.0

6 years ago

0.1.0

6 years ago

0.3.8

9 years ago

0.3.7

9 years ago

0.3.6

9 years ago

0.3.5

9 years ago

0.3.4

9 years ago

0.3.3

9 years ago

0.3.2

9 years ago

0.3.1

9 years ago

0.3.0

9 years ago

0.2.3

9 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.9

9 years ago

0.1.8

9 years ago

0.1.7

9 years ago

0.1.6

9 years ago

0.1.5

9 years ago

0.1.4

9 years ago

0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago