mirror of
https://github.com/Mibew/docs.mibew.org.git
synced 2024-11-15 00:24:13 +03:00
83 lines
2.4 KiB
JavaScript
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 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();
|
|
});
|