The FSEvents API in MacOS allows applications to register for notifications of changes to a given directory tree. It is a very fast and lightweight alternative to kqueue.
This is a low-level library. For a cross-platform file watching module that uses fsevents, check out Chokidar.
Installation
Supports only Node.js v8.16 and higher.
npminstallfsevents
Usage
constfsevents=require('fsevents');conststop=fsevents.watch(__dirname, (path, flags, id) => {constinfo=fsevents.getInfo(path, flags, id);}); // To start observationstop(); // To end observation
The callback passed as the second parameter to .watch get's called whenever the operating system detects a a change in the file system. It takes three arguments:
The getInfo function takes the path, flags and id arguments and converts those parameters into a structure that is easier to digest to determine what the change was.
The FsEventsInfo has the following shape:
Changelog
v2.3 supports Apple Silicon ARM CPUs
v2 supports node 8.16+ and reduces package size massively
v1.2.8 supports node 6+
v1.2.7 supports node 4+
Troubleshooting
I'm getting EBADPLATFORMUnsupported platform for fsevents error.
It's fine, nothing is broken. fsevents is macos-only. Other platforms are skipped. If you want to hide this warning, report a bug to NPM bugtracker asking them to hide ebadplatform warnings by default.
License
The MIT License Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller — see LICENSE file.