RSS Git Download  Clone
Raw Blame History 1kB 56 lines
/*
 * 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.push(options.script);


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

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