node-watch
Advanced tools
Comparing version 0.5.2 to 0.5.3
@@ -11,2 +11,8 @@ var fs = require('fs'); | ||
}, | ||
regExp: function(item) { | ||
return Object.prototype.toString.call(item) == '[object RegExp]'; | ||
}, | ||
string: function(item) { | ||
return typeof item === 'string'; | ||
}, | ||
func: function(item) { | ||
@@ -13,0 +19,0 @@ return typeof item === 'function'; |
@@ -49,3 +49,7 @@ var fs = require('fs'); | ||
if (fn(arg)) action(); | ||
} else { | ||
} | ||
else if (is.regExp(fn)) { | ||
if (fn.test(arg)) action(); | ||
} | ||
else { | ||
action(); | ||
@@ -121,3 +125,3 @@ } | ||
const deprecateWarning = util.deprecate( | ||
var deprecationWarning = util.deprecate( | ||
function() {}, | ||
@@ -252,3 +256,3 @@ '(node-watch) First param in callback function\ | ||
if (is.func(fn)) { | ||
if (fn.length == 1) deprecateWarning(); | ||
if (fn.length == 1) deprecationWarning(); | ||
this.on('change', fn); | ||
@@ -275,3 +279,3 @@ } | ||
if (is.func(fn)) { | ||
if (fn.length == 1) deprecateWarning(); | ||
if (fn.length == 1) deprecationWarning(); | ||
self.on('change', fn); | ||
@@ -278,0 +282,0 @@ } |
{ | ||
"description": "A neat fs.watch wrapper", | ||
"description": "A wrapper and enhancements for fs.watch", | ||
"license": "MIT", | ||
@@ -14,3 +14,3 @@ "name": "node-watch", | ||
], | ||
"version": "0.5.2", | ||
"version": "0.5.3", | ||
"bugs": { | ||
@@ -21,3 +21,3 @@ "url": "https://github.com/yuanchuan/node-watch/issues" | ||
"author": "yuanchuan <yuanchuan23@gmail.com> (http://yuanchuan.name)", | ||
"main": "./lib/watch.js", | ||
"main": "./index.js", | ||
"homepage": "https://github.com/yuanchuan/node-watch#readme", | ||
@@ -24,0 +24,0 @@ "scripts": { |
# node-watch [![Status](https://travis-ci.org/yuanchuan/node-watch.svg?branch=master)](https://travis-ci.org/yuanchuan/node-watch "See test builds") | ||
A neat [fs.watch](http://nodejs.org/api/fs.html#fs_fs_watch_filename_options_listener) wrapper. | ||
A wrapper and enhancements for [fs.watch](http://nodejs.org/api/fs.html#fs_fs_watch_filename_options_listener) (with 0 dependencies). | ||
@@ -8,3 +8,3 @@ [![NPM](https://nodei.co/npm/node-watch.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/node-watch.png/) | ||
### Installation | ||
## Installation | ||
@@ -15,3 +15,3 @@ ```bash | ||
### Example | ||
## Example | ||
@@ -21,4 +21,4 @@ ```js | ||
watch('somedir_or_somefile', { recursive: true }, function(evt, name) { | ||
console.log(name, ' changed.'); | ||
watch('file_or_dir', { recursive: true }, function(evt, name) { | ||
console.log('%s changed.', name); | ||
}); | ||
@@ -28,3 +28,3 @@ ``` | ||
This is a completely rewritten version, **much faster** and in a more **memory-efficient** way. | ||
So with recent nodejs versions under OS X or Windows you can do something like this: | ||
So with recent nodejs under OS X or Windows you can do something like this: | ||
@@ -37,3 +37,3 @@ ```js | ||
### Why? | ||
## Why? | ||
@@ -46,10 +46,11 @@ * Some editors will generate temporary files which will cause the callback function to be triggered multiple times. | ||
### Changelog | ||
## Changelog | ||
* The `filter` option can be of either Function or RegExp type since **v0.5.3**. | ||
* The `recursive` option is default to be `false` since **v0.5.0**. | ||
* The callback function will always provide a event name since **v0.5.0**. | ||
* The callback function will always provide an event name since **v0.5.0**. | ||
* Returns a [fs.FSWatcher](https://nodejs.org/api/fs.html#fs_class_fs_fswatcher) like object since **v0.4.0**. | ||
### Events | ||
## Events | ||
@@ -72,3 +73,3 @@ The events provided by the callback function would be either `update` or `remove`. | ||
### Watcher object | ||
## Watcher object | ||
@@ -92,18 +93,20 @@ `watch` function returns a [fs.FSWatcher](https://nodejs.org/api/fs.html#fs_class_fs_fswatcher) like object as the same as `fs.watch` (>= v0.4.0). | ||
### Extra options | ||
* `filter` Filter files or directories or skip to watch them. | ||
## Extra options | ||
* `filter <RegExp>` as a regular expression for filtering with ease | ||
* `filter <Function>` as a function to filter files | ||
```js | ||
var options = { | ||
// watch only for json files | ||
watch('./', { filter: /\.json$/ }, console.log); | ||
// ignore node_modules | ||
watch('./', { | ||
recursive: true, | ||
filter : function(name) { | ||
filter: function(name) { | ||
return !/node_modules/.test(name); | ||
} | ||
}; | ||
// ignore node_modules | ||
watch('./', options, console.log); | ||
}, console.log); | ||
``` | ||
### Known bugs | ||
## Known issues | ||
@@ -115,5 +118,5 @@ **Windows, node < v4.2.5** | ||
### Misc | ||
## Misc | ||
##### 1. Watch multiple files or directories in one place | ||
#### 1. Watch multiple files or directories in one place | ||
```js | ||
@@ -123,3 +126,3 @@ watch(['file1', 'file2'], console.log); | ||
##### 2. Other ways to filter | ||
#### 2. Other ways to filter | ||
@@ -152,7 +155,24 @@ *a)* filtering directly inside the callback function: | ||
#### 3. customize watch command line tool | ||
```js | ||
#!/usr/bin/env node | ||
### License | ||
Licensed under MIT | ||
// https://github.com/nodejs/node-v0.x-archive/issues/3211 | ||
require('epipebomb')(); | ||
var watcher = require('node-watch')( | ||
process.argv[2] || './', { recursive: true }, console.log | ||
); | ||
process.on('SIGINT', watcher.close); | ||
``` | ||
Monitoring chrome from disk: | ||
```bash | ||
$ watch / | grep -i chrome | ||
``` | ||
## License | ||
MIT | ||
Copyright (c) 2012-2017 [yuanchuan](https://github.com/yuanchuan) | ||
@@ -21,4 +21,4 @@ var assert = require('assert'); | ||
describe('watch for files', function() { | ||
it('should watch a single file and keep watching', function(done) { | ||
this.timeout(3000); | ||
var times = 1; | ||
@@ -33,5 +33,5 @@ var file = 'home/a/file1'; | ||
}); | ||
tree.modify(file); | ||
tree.modify(file, 400); | ||
tree.modify(file, 800); | ||
tree.modify(file, 100); | ||
tree.modify(file, 500); | ||
tree.modify(file, 900); | ||
}); | ||
@@ -166,3 +166,3 @@ | ||
tree.modify('home/b/file1', 200); | ||
tree.modify('home/node_modules/ma/file1', 200); | ||
tree.modify('home/node_modules/ma/file1', 500); | ||
@@ -173,3 +173,3 @@ setTimeout(function() { | ||
done(); | ||
}, 600); | ||
}, 900); | ||
}); | ||
@@ -197,6 +197,28 @@ | ||
tree.modify(file1); | ||
tree.modify(file2, 200); | ||
tree.modify(file1, 200); | ||
tree.modify(file2, 400); | ||
}); | ||
it('should be able to filter with regexp', function(done) { | ||
var dir = tree.getPath('home/a'); | ||
var file1 = 'home/a/file1'; | ||
var file2 = 'home/a/file2'; | ||
var options = { | ||
filter: /file2/ | ||
} | ||
var times = 0; | ||
watcher = watch(dir, options, function(evt, name) { | ||
times++; | ||
if (name == tree.getPath(file2)) { | ||
assert(times, 1, 'home/a/file1 should be ignored.'); | ||
done(); | ||
} | ||
}); | ||
tree.modify(file1, 200); | ||
tree.modify(file2, 400); | ||
}); | ||
}); | ||
@@ -203,0 +225,0 @@ }); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
26396
768
168