RSS Git Download  Clone
Raw Blame History
/*
 * grunt-p3x-express
 * https://github.com/ericclemmons/grunt-express-server
 *
 * Copyright (c) 2013 Eric Clemmons
 * Copyright (c) 2017 Patrik Laszlo <alabard@gmail.com>
 * Licensed under the MIT license.
 */
const path = require('path');

module.exports = function (grunt) {

    const servers = {};

    grunt.registerMultiTask('express', 'Start an express web server', function () {
        if (!servers[this.target]) {
            servers[this.target] = require('./lib/server')(grunt, this.target);
        }

        const server = servers[this.target];
        const action = this.args.shift() || 'start';
        const options = this.options({
            cmd: process.argv[0],
            opts: [],
            args: [],
            node_env: undefined,
            harmony: false,
            background: true,
            fallback: function () { /* Prevent EADDRINUSE from breaking Grunt */
            },
            port: process.env.PORT || 3000,
            delay: 0,
            output: ".+",
            debug: false,
            breakOnFirstLine: false,
            logs: undefined,
            hardStop: false
        });

        if (options.harmony) {
            options.args.unshift('--harmony');
        }

        options.script = path.resolve(options.script);

        options.args.unshift(options.script);

        if (!grunt.file.exists(options.script)) {
            grunt.log.error('Could not find server script: ' + options.script);
            return false;
        }

        server[action](options);
    });
};