Skip to content

astrohelm/filesnitch

Repository files navigation

FileSnitch - File system watcher

Watch specific files, directories and deeply nested directories
Deduplicate events with debounce
Filter your filesystem events

Warning

This library does not manage rename event, you will receive two different events instead:

  • First event is unlink, with old path to the file
  • Second event is new, with new path to the file

You can handle it on your own with handling this kind of scenarios. Also don't use this library if you want to manage remote repositories, try fs.watchFile instead.

Installation

npm i filesnitch --save

Usage

const Snitch = require('filesnitch');
const snitch = new Snitch({
  timeout: 200, // Events debouncing for queue (default 1000)
  filter: new RegExp(/[\D\d]+\.ignore\D*/), // Ignore files and directories
  // filter: path => new RegExp(/[\D\d]+\.ignore\D*/).test(path), // (Function)
  // filter: /[\D\d]+\.ignore\D*/, // (RegExp)
  // filter: '/[\D\d]+\.ignore\D*/', // (string)
  recursive: false, // Include nested directories (default: true)
  home: process.cwd(), // Removes root path from emits, Warning: ignore will work on full paths
});

snitch.watchSync('/home/user/Downloads').watchSync('/home/user/Documents');
snitch.watch('/home/user/Desktop', (event, path, details) => console.log('New File ! Desktop'));
snitch.on('before', events => console.log({ before: events }));
snitch.on('update', (path, details) => console.log({ changed: path, details }));
snitch.on('unlink', path => console.log({ deleted: path }));
snitch.on('new', path => console.log({ new: path }));
snitch.on('event', (event, path, details) => console.log({ event, path, details }));
snitch.on('after', events => console.log({ after: events }));

Copyright & contributors

Copyright © 2023 Astrohelm contributors. This library MIT licensed.
And it is part of Astrohelm ecosystem.