Open urls and files from a grunt task
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
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');
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');
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
}
});
})
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.
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.
app
parameter.path
parameter.MIT License, see LICENSE for details.