grunt-contrib-watch/README.md

151 lines
5.3 KiB
Markdown
Raw Normal View History

2012-10-10 06:10:58 +08:00
# grunt-contrib-watch [![Build Status](https://secure.travis-ci.org/gruntjs/grunt-contrib-watch.png?branch=master)](http://travis-ci.org/gruntjs/grunt-contrib-watch)
> Run predefined tasks whenever watched file patterns are added, changed or deleted.
2012-10-19 06:23:26 +08:00
2013-02-16 09:16:45 +08:00
2012-10-10 06:10:58 +08:00
## Getting Started
2013-02-18 22:00:57 +08:00
This plugin requires Grunt `~0.4.0`
2013-02-16 09:16:45 +08:00
If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
2012-10-10 06:10:58 +08:00
```shell
2012-10-19 06:23:26 +08:00
npm install grunt-contrib-watch --save-dev
2012-10-10 06:10:58 +08:00
```
2013-02-21 01:42:59 +08:00
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
2013-02-18 22:00:57 +08:00
```js
grunt.loadNpmTasks('grunt-contrib-watch');
```
2013-02-16 09:16:45 +08:00
2012-10-10 06:10:58 +08:00
## Watch task
_Run this task with the `grunt watch` command._
2012-10-10 06:10:58 +08:00
### Settings
2012-10-10 06:10:58 +08:00
2012-10-19 06:23:26 +08:00
There are a number of options available. Please review the [minimatch options here](https://github.com/isaacs/minimatch#options). As well as some additional options as follows:
2012-10-10 06:10:58 +08:00
#### files
2012-10-29 06:07:13 +08:00
Type: `String|Array`
This defines what file patterns this task will watch. Can be a string or an array of files and/or minimatch patterns.
#### tasks
2012-10-19 06:23:26 +08:00
Type: `String|Array`
2012-10-10 06:10:58 +08:00
2012-10-19 06:23:26 +08:00
This defines which tasks to run when a watched file event occurs.
2012-10-10 06:10:58 +08:00
#### options.interrupt
2012-10-19 06:23:26 +08:00
Type: `boolean`
Default: false
As files are modified this watch task will spawn tasks in child processes. The default behavior will only spawn a new child process per target when the previous process has finished. Set the `interrupt` option to true to terminate the previous process and spawn a new one upon later changes.
Example:
2012-10-19 06:23:26 +08:00
```js
watch: {
scripts: {
files: '**/*.js',
tasks: ['jshint'],
options: {
interrupt: true
}
}
}
```
#### options.debounceDelay
2012-10-19 06:23:26 +08:00
Type: `Integer`
Default: 500
2012-10-10 06:10:58 +08:00
2012-10-19 06:23:26 +08:00
How long to wait before emitting events in succession for the same filepath and status. For example if your `Gruntfile.js` file was `changed`, a `changed` event will only fire again after the given milliseconds.
2012-10-10 06:10:58 +08:00
Example:
2012-10-19 06:23:26 +08:00
```js
2012-10-10 06:10:58 +08:00
watch: {
scripts: {
files: '**/*.js',
2012-10-10 06:15:30 +08:00
tasks: ['jshint'],
2012-10-10 06:10:58 +08:00
options: {
debounceDelay: 250
}
}
}
```
#### options.interval
2012-10-19 06:23:26 +08:00
Type: `Integer`
Default: 100
2012-10-10 06:10:58 +08:00
The `interval` is passed to `fs.watchFile`. Since `interval` is only used by `fs.watchFile` and this watcher also uses `fs.watch`; it is recommended to ignore this option. *Default is 100ms*.
### Examples
2012-10-19 06:23:26 +08:00
```js
// Simple config to run jshint any time a file is added, changed or deleted
grunt.initConfig({
watch: {
files: '**/*',
tasks: ['jshint']
}
});
```
2012-10-29 06:07:13 +08:00
```js
// Advanced config. Run specific tasks when specific files are added, changed or deleted.
grunt.initConfig({
watch: {
gruntfile: {
files: 'Gruntfile.js',
tasks: ['jshint:gruntfile'],
options: {
nocase: true
}
},
src: {
files: ['lib/*.js', 'css/**/*.scss', '!lib/dontwatch.js'],
tasks: ['default']
},
test: {
files: '<%= jshint.test.src %>',
tasks: ['jshint:test', 'qunit']
}
}
});
```
2012-10-19 06:23:26 +08:00
### FAQs
#### How do I fix the error `EMFILE: Too many opened files.`?
This is because of your system's max opened file limit. For OSX the default is very low (256). Temporarily increase your limit with `ulimit -n 10480`, the number being the new max limit.
#### Can I use this with Grunt v0.3?
Yes. Although `grunt-contrib-watch` is a replacement watch task for Grunt v0.4, version `grunt-contrib-watch@0.1.x` is compatible with Grunt v0.3. `grunt-contrib-watch >= 0.2.x` is **only* compatible and recommended to use with Grunt v0.4.
#### Why is the watch devouring all my memory?
Likely because of an enthusiastic pattern trying to watch thousands of files. Such as `'**/*.js'` but forgetting to exclude the `node_modules` folder with `'!node_modules/**/*.js'`. Try grouping your files within a subfolder or be more explicit with your file matching pattern.
2012-10-19 06:23:26 +08:00
2012-10-29 06:07:13 +08:00
## Release History
2013-02-16 09:16:45 +08:00
* 2013-02-14v0.2.0First official release for Grunt 0.4.0.
* 2013-01-17v0.2.0rc7Updating grunt/gruntplugin dependencies to rc6. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.
* 2013-01-08v0.2.0rc5Updating to work with grunt v0.4.0rc5.
* 2012-12-14v0.2.0aConversion to grunt v0.4 conventions. Remove node v0.6 and grunt v0.3 support. Allow watch task to be renamed. Use grunt.util.spawn "grunt" option. Updated to gaze@0.3.0, forceWatchMethod option removed.
* 2012-10-31v0.1.4Prevent watch from spawning duplicate watch tasks
* 2012-10-27v0.1.3Better method to spawn the grunt bin Bump gaze to v0.2.0. Better handles some events and new option forceWatchMethod Only support Node.js >= v0.8
* 2012-10-16v0.1.2Only spawn a process per task one at a time Add interrupt option to cancel previous spawned process Grunt v0.3 compatibility changes
* 2012-10-15v0.1.1Fallback to global grunt bin if local doesnt exist. Fatal if bin cannot be found Update to gaze 0.1.6
* 2012-10-07v0.1.0Release watch task Remove spawn from helper Run on Grunt v0.4
---
Task submitted by [Kyle Robinson Young](http://dontkry.com)
2013-02-21 01:42:59 +08:00
*This file was generated on Wed Feb 20 2013 12:36:23.*