MinoriWiki
MinoriWiki is a static Wiki site Generator
Currently under development - PRs welcome
Usage
- Install via NPM:
npm install minori -g
- Create an empty directory
minori init
- Edit
config.yml
to fit your needs - Use
minori note [filename]
to create new note or edit existing one, you can also useapi/data
for filename to create directories - Deploy your files generated under site directory (Default to
wiki
) to production environment with commandminori commit
.
Directories
source
(defaults tonotes
) directory contains all note markdown filesstatic
(defaults tostatic
) directory will be copied tosite
directory, you could store any static files that may be used in your wiki site.site
(defaults towiki
) directory contains generated site files.
If you are going to change the site
directory, just rename the wiki
folder to keep Git objects.
Commands
minori init
orminori i
- Init under current working directoryminori note [filename]
orminori n [filename]
- Create or edit noteminori done
orminori d
- Generate site filesminori commit
orminori c
- Commit changes and deploy to production environmentminori updatecfg
orminori u
- Update currentconfig.yml
file with the new version installed. New config file will written toconfig.yml.new
.minori server
orminori s
- Start a static file server to preview your wiki site locally.
Theme
Theme is customizable. Theme directory should contain:
assets
directory to store style sheets, scripts, fonts, etc.index.ejs
is the homepage template.page.ejs
is the post page template.changes.ejs
is the changelog page template.
The following variables are passed to EJS:
config
- the parsedconfig.yml
objectcategories
- Array of category object:
[
{
"name": "uncategoried",
"pages": [
{
"title": "page title",
"link": "page-file-name",
"category": "uncategoried",
"time": 1471234567890,
"content": "parsed html"
},
...
]
},
...
]
page
-{}
in homepage and the specified page object in post page.
When parsing changelog page, the commits object is passed:
[
{
hash: '2765ac1dea7f8080048d6f603683615b2f2c2c78',
abbrevHash: '2765ac1',
subject: 'update test.md',
committerName: 'foo bar',
committerDate: 'Tue Dec 1 15:48:53 2015 +0800',
status: [ 'M' ],
files: [ 'test.md' ]
}, {
hash: '9bf21ee34231208fd2e24469b7472b54df3954182',
abbrevHash: '9bf21ee',
subject: 'update',
committerName: 'foo bar',
committerDate: 'Tue Dec 1 15:26:06 2015 +0800',
status: [ 'M' ],
files: [ 'test.md' ]
}
]
Speed
For 1200 * Format Test Page in 3 different categories:
- with MathJax
~> time minori d
minori d 70.00s user 1.42s system 105% cpu 1:07.76 total
- without MathJax
~> time minori d
minori d 10.91s user 1.01s system 105% cpu 11.320 total
Tested on a ThinkPad X1 Carbon 2015 (i7-5600U / 16G RAM / 512G NVMe) with Arch Linux.
License
MIT.