A simple file watcher for Node
npm install vscode-nsfw| Linux | OS X | Windows |
|---|---|---|
When NSFW has events and is not being throttled, it will group those events in the order that they occurred and report them to the Javascript layer in a single callback. This is an improvement over services that utilize Node FS.watch, which uses a callback for every file event that is triggered. Every callback FS.watch makes to the event queue is a big bonus to NSFW's performance when watching large file system operations, because NSFW will only make 1 callback with many events within a specified throttle period.
So why NSFW? Because it has a consistent and minimal footprint in the Javascript layer, manages recursive watching for you, and is super easy to use.
``js
var nsfw = require('nsfw');
var watcher1;
return nsfw(
'dir1',
function(events) {
// handle events
})
.then(function(watcher) {
watcher1 = watcher;
return watcher.start();
})
.then(function() {
// we are now watching dir1 for events!
// To stop watching
watcher1.stop()
});
// With options
var watcher2;
return nsfw(
'dir2',
function(events) {
// handles other events
},
{
debounceMS: 250,
errorCallback(errors) {
//handle errors
}
})
.then(function(watcher) {
watcher2 = watcher;
return watcher.start();
})
.then(function() {
// we are now watching dir2 for events!
})
.then(function() {
// To stop watching
watcher2.stop();
})
`
An array of events as they have happened in a directory, it's children, or to a file.
`js`
[
{
"action": 2, // nsfw.actions.MODIFIED
"directory": "/home/nsfw/watchDir",
"file": "file1.ext"
},
{
"action": 0, // nsfw.actions.CREATED
"directory": "/home/nsfw/watchDir",
"file": "folder"
},
{
"action": 1, // nsfw.actions.DELETED
"directory": "home/nsfw/watchDir/testFolder",
"file": "test.ext"
},
{
"action": 3, // nsfw.actions.RENAMED
"directory": "home/nsfw/watchDir",
"oldFile": "oldname.ext",
"newDirectory": "home/nsfw/watchDir/otherDirectory"
"newFile": "newname.ext"
}
]
Event are enumerated by the nsfw.actions enumeration
`js``
nsfw.actions = {
CREATED: 0,
DELETED: 1,
MODIFIED: 2,
RENAMED: 3
};