docs.mibew.org/index.js
2015-04-15 10:31:12 +00:00

83 lines
2.4 KiB
JavaScript

var Metalsmith = require('metalsmith'),
markdown = require('metalsmith-markdown'),
assets = require('metalsmith-assets'),
templates = require('metalsmith-templates'),
navigation = require('metalsmith-navigation'),
bower = require('bower');
/**
* Installs bower dependencies that are needed for docs site.
*
* @param {Function} callback A function that will be called when the
* dependencies are installed.
*/
var installBowerDependencies = function(callback) {
bower.commands.install([], {}, {})
.on('error', function(error) {
throw error;
})
.on('end', function() {
if (typeof callback === 'function') {
callback();
}
});
}
/**
* Builds static HTML pages of the docs site.
*
* @param {Function} callback A function that will be called when the
* pages are built.
*/
var buildPages = function(callback) {
(new Metalsmith(__dirname))
// This data will be available inside the templates
.metadata({
baseUrl: '',
githubUrl: 'https://github.com/mibew/mibew',
// It's documented nowhere but these partials will be passed to
// Handlebars.js template engine.
partials: {
// File extension is not skipped here because it will be
// append automatically using one from rendered file.
menu: 'menu'
}
})
.use(markdown())
.use(navigation(
{
contents: {
sortBy: 'nav_sort',
filterProperty: 'show_in_menu',
includeDirs: true
}
},
navSettings = {
navListProperty: 'navs'
}
))
.use(templates({
engine: 'handlebars',
// The extension cannot be omitted here because it will be used
// for all partials later.
'default': 'default.handlebars'
}))
.use(assets({
source: './assets',
destination: './assets'
}))
.build(function(err) {
if (err) {
throw err;
}
if (typeof callback === 'function') {
callback();
}
});
}
// Build the site
installBowerDependencies(function() {
buildPages();
});