Mujidoc

Mujidoc is a simple static site generator.

Installation

go install github.com/japanese-document/mujidoc/cmd/mujidoc@0.0.11

Usage

You create a configuration file and execute the command.

Execute

following command:

mujidoc

Please note that this command first deletes the directory specified in OUTPUT_DIR, then creates a new directory at OUTPUT_DIR.

Content

You place markdown files with the following metadata in SOURCE_DIR.

{ "category": "Go",  "order": 0, "date": "2024-01-03 15:00" }
---
# Title 

something

category

This is the name of the category to which the page belongs. This is one of CATEGORIES. If SINGLE_PAGE is true, category is unnecessary.

order

This specifies the position at which the page is displayed within the category. If SINGLE_PAGE is true, order is unnecessary.

date

This is the value for pubDate in the RSS feed. If RSS is false, date is unnecessary.

Configuration file

You need to place a configuration file named .env.mujidoc in working directory. Here is an example:

CATEGORIES=Go,Python,Ubuntu
BASE_URL=https://japanese-document.github.io/mujidoc
PAGE_LAYOUT=src/layout.html
INDEX_PAGE_HEADER=Mujidoc
INDEX_PAGE_TITLE=Mujidoc
INDEX_PAGE_DESCRIPTION="Mujidoc is simple html page generator."
INDEX_PAGE_LAYOUT=src/layout.html
OUTPUT_DIR=docs
SOURCE_DIR=src
SINGLE_PAGE=false
RSS=true
TIME_ZONE="Asia/Tokyo"

CATEGORIES

This specifies categories separated by commas. The categories will be displayed in the order specified.

BASE_URL

This is the base URL of the generated site.

PAGE_LAYOUT

This specifies the layout for the generated HTML.

INDEX_PAGE_HEADER

This is the value of the h1 element for index.html.

INDEX_PAGE_TITLE

This is the title of the h1 element for index.html.

INDEX_PAGE_DESCRIPTION

This is the description of the h1 element for index.html.

INDEX_PAGE_LAYOUT

This specifies the layout for index.html.

OUTPUT_DIR

This is the directory where the generated HTML is output.

SOURCE_DIR

This is the directory where markdown files are placed.

SINGLE_PAGE

If you want a single page, specify true for this option.

RSS

If you want to generate an RSS feed, specify true for this option. The generated RSS feed file name is rss.xml in OUTPUT_DIR.

TIME_ZONE

This specifies the timezone to be used for the RSS feed.

Images

When providing image files, you need to place the image files in the SOURCE_DIR/images directory. The image files move to OUTPUT_DIR/images.

Page layout

Page layout files (PAGE_LAYOUT and INDEX_PAGE_LAYOUT) must be placed as below. Their names are configured by PAGE_LAYOUT and INDEX_PAGE_LAYOUT in the configuration file.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width" />
    <meta name="twitter:card" content="summary" />
    <meta property="og:url" content="__URL__" />
    <meta property="og:title" content="__TITLE__" />
    <meta property="og:description" content="__DESCRIPTION__" />
    <meta property="og:image" content="https://japanese-document.github.io/mujidoc/images/favicon.png" />
    <meta name="theme-color" content="#f1f7fe" />
    <meta name="description" content="__DESCRIPTION__" />
    <link rel="icon" type="image/png" href="https://japanese-document.github.io/mujidoc/images/favicon.png" />
    <title>__TITLE__</title>
    <link rel="stylesheet" href="__CSS__" type="text/css"  media="all" />
  </head>
  <body class="container">
    <div class="left-side">__INDEX__</div>
    <main class="main markdown-body">
      __BODY__
    </main>
    <div class="right-side">__HEADER__</div>
    <footer class="footer markdown-body">
      <a href="/mujidoc">Top</a>
    </footer>
  </body>
</html>