grunt-express-middleware

The best Grunt plugin ever.

grunt-express-middleware

The best Grunt plugin ever.

This plugin requires Grunt ~0.4.4

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-express-middleware --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-express-middleware');

Run this task with the grunt express command.

Configure one or more servers for grunt to start, the minimal config would be:

  grunt.initConfig({
    express: {
      option: {}
    }
  });
grunt.registerTask('myServer', ['express', 'express-keepalive']);

Now when you run grunt myServer, your express server will be kept alive until you manually terminate it.

All options of grunt-express are optional, if you specify nothing, it will start an express server using port 8080 (which serves nothing).

Type: Integer Default: 8080

The port on which the webserver will respond. The task will fail if the specified port is already in use.

Type: String Default: 'localhost'

The hostname the webserver will use. If set to '*', server could be accessed from ip (e.g. 127.0.0.1) as well as localhost

Type: String|Array Default: null

The bases (or root) directories from which static files will be served. A express.static() will be generated for each entry of bases. When livereload is set to true (or set to a specific port number), a watch task will be created for you (at runtime) to watch your basePath/**/*.*.

app.use(function staticsPlaceholder(req, res, next) {
  return next();
});

Type: Object Default:

This options allows you to define the livereload port. Here are some examples:

  grunt.initConfig({
    express: {
      option: {
        sample_server: {
        }
      }
    }
  });

=> Don't start livereload server.

  grunt.initConfig({
    express: {
      option: {
        bases: [],
        sample_server: {
          livereload: {
          }
        }
      }
    }
  });

=> Start livereload server at default port 35729 and watch from bases

  grunt.initConfig({
    express: {
      option: {
        sample_server: {
          livereload: {
            port: 1333,
            watch: []
          }
        }
      }
    }
  });

=> Start livereload server at port 1333 and wath from watch list

Type: Function Default:

This is completely dynamic middleware.

  grunt.initConfig({
    express: {
      option: {
        sample_server: {
          middleware: function(app){
            //TO-DO
            // This is express app. You can do any thing express can.
          }
        }
      }
    }
  });

Type: Boolean Default: false

// Project configuration.
grunt.initConfig({
  express: {
    server: {
      options: {
        hostname: '*',
        port: 9000,
        bases: ['some/static/dir'],
        livereload: {
          port: 35729,
          watch: ['all/dir/to/watch', 'dont/include/bases']
        },
        logger: true,
        middleware: function(app){
            //TO-DO
        }
      }
    }
  }
});

(Nothing yet)