mkbk
v0.1.3-beta.3
Published
A static site generator geared towards creatives distributing markdown-based books
Downloads
36
Readme
mkbk
📚 A book library static site generator .
A static site generator geared towards creatives looking to distribute their markdown-based written works.
Features
- Generate a full static site from a straightforward organization of markdown files
- Creates RSS feeds and EPUB files for every book
- Customization: provides powerful theming capabilities allowing you to customize the internal HTML output using the Nunjucks templating engine.
- Extensible: returns a collection object which prevents lock-in to a specific output paradigm (ie. bring your own renderer) and allows you to generate other non-HTML formats.
COPYING
SPDX-License-Identifier: MPL-2.0
See LICENSE.txt
Usage
Installation and Quickstart
Ensure you have node.js
and npm
installed.
- Bootstrap a node project:
npm init -y npm install mkbk
- Create an
index.js
file with the following contents:const { collection, renderer } = require('mkbk'); // Create a collection project const project = collection.parse( { title: 'Book Collection Web Title', workingDir: '.', baseURL: 'https://example.com/books', // REQUIRED for RSS feeds languageCode: 'en', books: [ { id: 'unique-book-id', // REQUIRED workingDir: './books/warp', // REQUIRED title: "Book Title", languageCode: 'en', tags: ["Science Fiction", "Fantasy", "Action", "Adventure"], description: 'One or two sentences describing the book.', coverRelPath: 'cover.webp', blurbRelPath: 'index.md', status: 'Completed', }, { id: 'unique-book-id-2', // REQUIRED workingDir: './books/warp', // REQUIRED title: "Book Title 2", languageCode: 'en', tags: ["Dark Fantasy", "Action", "Thriller"], description: 'One or two sentences describing the book.', coverRelPath: 'cover.webp', blurbRelPath: 'index.md', status: 'On Hiatus', }, ] } ); // Generate HTML Site from a collection object try { renderer.genCollectionStaticSite(project); } catch (err) { console.log(err); }
- Structure your content as seen in Folder Structure and examples
- Run
node index.js
to build static website.
Folder Structure
mkbk
utilizes a straightforward folder structure for your source files.
PROJECT_ROOT/
package.json
index.js
books/ # source directory containing a bunch of books
book-id-1/
index.md
cover.webp
chapters/
markdown-file-1.md
markdown-file-2.md
layout/ # customize internal html generation
index.html
book.html
chapter.html
assets/
styles.css
placeholder-image.png
out/ # This is where the final site is created
index.html
styles.css
placeholder-image.png
book-id-1/
index.html
cover.webp
markdown-file-1.html
markdown-file-2.html
rss.xml
book-id-1.epub
# ...