Add atBegin option to run tasks when watcher starts. Closes GH-147.
This commit is contained in:
parent
bbb41575d5
commit
bfe7a2a1fb
@ -128,6 +128,12 @@ Default: true
|
|||||||
|
|
||||||
This is *only a task level option* and cannot be configured per target. By default the watch task will duck punch `grunt.fatal` and `grunt.warn` to try and prevent them from exiting the watch process. If you don't want `grunt.fatal` and `grunt.warn` to be overridden set the `forever` option to `false`.
|
This is *only a task level option* and cannot be configured per target. By default the watch task will duck punch `grunt.fatal` and `grunt.warn` to try and prevent them from exiting the watch process. If you don't want `grunt.fatal` and `grunt.warn` to be overridden set the `forever` option to `false`.
|
||||||
|
|
||||||
|
#### options.atBegin
|
||||||
|
Type: `Boolean`
|
||||||
|
Default: false
|
||||||
|
|
||||||
|
This option will trigger the run of each specified task at startup of the watcher.
|
||||||
|
|
||||||
#### options.livereload
|
#### options.livereload
|
||||||
Type: `Boolean|Number|Object`
|
Type: `Boolean|Number|Object`
|
||||||
Default: false
|
Default: false
|
||||||
@ -365,4 +371,4 @@ Spawning does cause a performance hit (usually 500ms for most environments). It
|
|||||||
|
|
||||||
Task submitted by [Kyle Robinson Young](http://dontkry.com)
|
Task submitted by [Kyle Robinson Young](http://dontkry.com)
|
||||||
|
|
||||||
*This file was generated on Fri Jul 05 2013 09:42:30.*
|
*This file was generated on Sun Jul 07 2013 14:50:23.*
|
||||||
|
@ -100,6 +100,12 @@ Default: true
|
|||||||
|
|
||||||
This is *only a task level option* and cannot be configured per target. By default the watch task will duck punch `grunt.fatal` and `grunt.warn` to try and prevent them from exiting the watch process. If you don't want `grunt.fatal` and `grunt.warn` to be overridden set the `forever` option to `false`.
|
This is *only a task level option* and cannot be configured per target. By default the watch task will duck punch `grunt.fatal` and `grunt.warn` to try and prevent them from exiting the watch process. If you don't want `grunt.fatal` and `grunt.warn` to be overridden set the `forever` option to `false`.
|
||||||
|
|
||||||
|
## options.atBegin
|
||||||
|
Type: `Boolean`
|
||||||
|
Default: false
|
||||||
|
|
||||||
|
This option will trigger the run of each specified task at startup of the watcher.
|
||||||
|
|
||||||
## options.livereload
|
## options.livereload
|
||||||
Type: `Boolean|Number|Object`
|
Type: `Boolean|Number|Object`
|
||||||
Default: false
|
Default: false
|
||||||
|
@ -87,7 +87,21 @@ module.exports = function(grunt) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Return the targets normalized
|
// Return the targets normalized
|
||||||
return self._getTargets(self.name);
|
var targets = self._getTargets(self.name);
|
||||||
|
|
||||||
|
// Check whether target's tasks should run at start w/ atBegin option
|
||||||
|
if (self.running === false) {
|
||||||
|
self.queue = targets.filter(function(tr) {
|
||||||
|
return tr.options.atBegin === true && tr.tasks.length > 0;
|
||||||
|
}).map(function(tr) {
|
||||||
|
return tr.name;
|
||||||
|
});
|
||||||
|
if (self.queue.length > 0) {
|
||||||
|
self.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return targets;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Normalize targets from config
|
// Normalize targets from config
|
||||||
|
@ -73,6 +73,7 @@ module.exports = function(grunt) {
|
|||||||
var targets = taskrun.init(name, {
|
var targets = taskrun.init(name, {
|
||||||
interrupt: false,
|
interrupt: false,
|
||||||
nospawn: false,
|
nospawn: false,
|
||||||
|
atBegin: false,
|
||||||
event: ['all'],
|
event: ['all'],
|
||||||
target: target,
|
target: target,
|
||||||
});
|
});
|
||||||
|
22
test/fixtures/atBegin/Gruntfile.js
vendored
Normal file
22
test/fixtures/atBegin/Gruntfile.js
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
module.exports = function(grunt) {
|
||||||
|
'use strict';
|
||||||
|
grunt.initConfig({
|
||||||
|
echo: {
|
||||||
|
one: { message: 'one has changed' }
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
options:{
|
||||||
|
atBegin: true
|
||||||
|
},
|
||||||
|
one: {
|
||||||
|
files: ['lib/one.js', 'Gruntfile.js'],
|
||||||
|
tasks: 'echo:one',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// Load the echo task
|
||||||
|
grunt.loadTasks('../tasks');
|
||||||
|
// Load this watch task
|
||||||
|
grunt.loadTasks('../../../tasks');
|
||||||
|
grunt.registerTask('default', ['echo']);
|
||||||
|
};
|
1
test/fixtures/atBegin/lib/one.js
vendored
Normal file
1
test/fixtures/atBegin/lib/one.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
var test = true;
|
@ -26,6 +26,20 @@ exports.watchConfig = {
|
|||||||
cleanUp();
|
cleanUp();
|
||||||
done();
|
done();
|
||||||
},
|
},
|
||||||
|
atBegin: function(test) {
|
||||||
|
test.expect(1);
|
||||||
|
var cwd = path.resolve(fixtures, 'atBegin');
|
||||||
|
var assertWatch = helper.assertTask(['watch', '--debug'], {cwd:cwd});
|
||||||
|
assertWatch(function() {
|
||||||
|
// noop. Does not modify any watched files.
|
||||||
|
}, function(result) {
|
||||||
|
helper.verboseLog(result);
|
||||||
|
var firstIndex = result.indexOf('one has changed');
|
||||||
|
test.ok(firstIndex !== -1, 'Watch should have fired even though no file was changed.');
|
||||||
|
test.done();
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
oneTarget: function(test) {
|
oneTarget: function(test) {
|
||||||
test.expect(2);
|
test.expect(2);
|
||||||
var cwd = path.resolve(fixtures, 'oneTarget');
|
var cwd = path.resolve(fixtures, 'oneTarget');
|
||||||
|
Loading…
Reference in New Issue
Block a user