Detalhes do pacote

cheap-watch

Conduitry45.2kMIT1.0.4

If it works, why use something else?

async, asynchronous, file, watch

readme (leia-me)

Cheap Watch: If it works, why use something else?

npm version Build Status

Cheap Watch is a small, simple, dependency-free, cross-platform file system watcher for Node.js 8+.

Constructor

new CheapWatch({ dir, filter, watch = true, debounce = 10 })

  • dir - The directory whose contents to watch. It's recommended, though not required, for this to be an absolute path, say one returned by path.resolve.
  • filter({ path, stats }) - (optional) A function to decide whether a given file or directory should be watched. It's passed an object containing the file or directory's relative path and its stats. It should return true or false (or a Promise resolving to one of those). Returning false for a directory means that none of its contents will be watched.
  • watch - (optional) Whether to actually watch the directory for changes. Defaults to true. If false, you can retrieve all of the files and directories within a given directory along with their initial Stats but changes will not be monitored.
  • debounce - (optional) Length of timeout in milliseconds to use to debounce incoming events from fs.watch. Defaults to 10. Multiple events are often emitted for a single change, and events can also be emitted before fs.stat reports the changes. So we will wait until debounce milliseconds have passed since the last fs.watch event for a file or directory before handling it. The default of 10ms Works On My Machine.

Methods

init()

Initialize the watcher, traverse the directory to find the initial files and directories, and set up watchers to look for changes.

This returns a Promise that resolves once the initial contents of the directory have been traversed and all of the watchers have been set up.

close()

Close all FSWatcher instances, and stop watching for file changes.

Properties

paths

A Map of the watched files and directories. Each key is a relative path from the CheapWatch's dir, and each value is a Stats object for the file or directory. Paths are always separated by forward slashes, regardless of platform. This Map is kept up to date as files are changed on disk.

You can use stats.isFile() and stats.isDirectory() to determine whether something is a file or a directory.

Events

A CheapWatch is an EventEmitter, and emits two events to report a new, updated, or deleted file or directory.

+ { path, stats, isNew }

A + event is emitted whenever a watched file or directory is created or updated. It's emitted with an object containing a path string, a stats object, and an isNew boolean which will be true for newly created files and directories and false for updated ones.

- { path, stats }

A - event is emitted whenever a watched file or directory is deleted. It's emitted with an object containing a path string and a stats object. stats will be the most recent Stats collected for the file or directory before it was deleted.

Usage

import CheapWatch from 'cheap-watch';

const watch = new CheapWatch({ dir, /* ... */ });

await watch.init();

for (const [path, stats] of watch.paths) {
    /* ... */
}

watch.on('+', ({ path, stats, isNew }) => { /* ... */ });
watch.on('-', ({ path, stats }) => { /* ... */ });

License

MIT

changelog (log de mudanças)

v1.0.4

  • Fix ESM build by using named EventEmitter export

v1.0.3

  • Fix published types

v1.0.2

  • Include TypeScript declaration file (.d.ts)

v1.0.1

  • Make sure we manually emit an event for a directory when one of its direct children is updated

v1.0.0

  • Internal rewrite in TypeScript
  • Git tag is now the built version, for easier direct installation without the npm registry

v0.3.0

  • Rename .files to .paths, as it contains directories, not just files
  • Include an additional isNew boolean in + events, indicating whether this is a new or an updated file/directory
  • No longer call the filter function on the root watched directory
  • No longer include the root watched directory under the '' in the Map, nor emit + events for it

v0.2.2

  • Rollup was erroneously added as a dependency and is now a dev dependency as it should be

v0.2.1

  • Add some more type checking
  • Ignore error events from FSWatcher, as Windows seems to like emitting these sometimes

v0.2.0

  • Report directory stats and events
  • Expose latest stats for all files and directories as watch.files
  • Expose pre-deletion stats for deleted files and directories as part of - event
  • watch.init() simply returns a Promise resolving to undefined now that watch.files is available

v0.1.0

  • Initial release