https://github.com/astrohelm/filesnitch
Astrohelm file system snitch 👁️
https://github.com/astrohelm/filesnitch
astrohelm filesystem fs javascript montoring nodejs snitch watcher zero-dependencies
Last synced: 6 months ago
JSON representation
Astrohelm file system snitch 👁️
- Host: GitHub
- URL: https://github.com/astrohelm/filesnitch
- Owner: astrohelm
- License: mit
- Created: 2023-08-25T16:54:09.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-24T15:06:59.000Z (about 1 year ago)
- Last Synced: 2025-04-23T11:57:42.386Z (6 months ago)
- Topics: astrohelm, filesystem, fs, javascript, montoring, nodejs, snitch, watcher, zero-dependencies
- Language: JavaScript
- Homepage: https://astrohelm.ru
- Size: 142 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
- Authors: AUTHORS
Awesome Lists containing this project
README
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
```bash
npm i filesnitch --save
```Usage
```js
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.