denis-sokolov/portent

View on GitHub
src/index.js

Summary

Maintainability
A
1 hr
Test Coverage
'use strict';

var fs = require('fs');

var base = require('./base');
var build = require('./build');
var favicon = require('./favicon');
var htaccess = require('./htaccess');
var images = require('./images');
var pages = require('./pages');
var robots = require('./robots');
var scripts = require('./scripts');
var selfLinks = require('./self-links');
var server = require('./server');
var statics = require('./statics');
var stylesheets = require('./stylesheets');


module.exports = function(directory){
    // Ensure the code works with symlinks and ../ in the path
    directory = fs.realpathSync(directory);

    return {
        build: function(destinationDirectory, opts){
            opts = opts || {};
            opts.onWarning = opts.onWarning || function(){};

            var plugins = [
                images(directory),
                favicon(directory + '/img/favicon.png'),
                scripts(directory),
                stylesheets(directory, { minify: true }),
                robots(directory),
                statics(directory),
                selfLinks(),
                base.warnAboutMissingBase(opts.onWarning),
                htaccess(directory)
            ];
            plugins.push(pages(directory, plugins, {
                minify: true
            }));

            return build(server, directory, plugins)(destinationDirectory);
        },
        server: (function(){
            var plugins = [
                images(directory),
                favicon(directory + '/img/favicon.png'),
                scripts(directory, { debug: true }),
                stylesheets(directory, { sourcemaps: true }),
                robots(directory),
                statics(directory),
                base.addBase(),
                selfLinks()
            ];
            plugins.push(pages(directory, plugins));
            return server(directory, plugins);
        })()
    };
};