jsoverson / grunt-open

Open urls and files from a grunt task
MIT License
109 stars 19 forks source link

grunt-open

Open urls and files from a grunt task

Installation

Install using npm in the root of your project directory (where your package.json and Gruntfile.js are located)

npm install --save-dev grunt-open

Usage

This is used as part of your grunt tasks, between the server and watch tasks

grunt.registerTask('default', ['server', 'open', 'watch']);

You can specify different configurations so that you can set up task chains (see the configuration below for this example's config)

grunt.registerTask('dev', ['server', 'open:dev', 'watch']);
grunt.registerTask('build', ['build', 'server', 'open:build', 'watch:build');

Gruntfile Configuration

This is a very simple task and takes two configuration parameters, path (required) and app (optional). If app is not specified, the default system browser will be launched

grunt.initConfig({
  open : {
    dev : {
      path: 'http://127.0.0.1:8888/src',
      app: 'Google Chrome'
    },
    build : {
      path : 'http://google.com/',
      app: 'Firefox'
    },
    file : {
      path : '/etc/hosts'
    },
    custom: {
      path : function () {
        return grunt.option('path');
      } 
    }
  }
})

grunt.loadNpmTasks('grunt-open');

Options

openOn

Type: String

While it may not be common, you may want to delay the opening of your path at a later time of the grunt process. The option openOn allows you to define an event (coming through from grunt.event) that would signal the expected triggering of open. Example:

grunt.initConfig({
  open: {
    delayed: {
      path: 'http://localhost:3000',
      app: 'Google Chrome',
      options: {
        openOn: 'serverListening'
      }
    }
  }
});

grunt.registerTask('server', function () {
  var server = require('myServer');
  server.listen(3000, function (err) {
    if (!err) {
      grunt.log.writeln('Server started');
      grunt.event.emit('serverListening'); // triggers open:delayed
    }
  });
})

delay

Type : Number

Set a delay for the open. Note: This task moves on immediately. If this is the last task in your chain you run the risk of node exiting before your open is called.

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using grunt.

Release History

License

MIT License, see LICENSE for details.