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.
npm install fsevents
Usage
constfsevents=require('fsevents');// To start observationconststop=fsevents.watch(__dirname,(path,flags,id)=>{constinfo=fsevents.getInfo(path,flags);});// To end observationstop();
Important note: The API behaviour is slightly different from typical JS APIs. The stop function must be
retrieved and stored somewhere, even if you don't plan to stop the watcher. If you forget it, the garbage collector
will eventually kick in, the watcher will be unregistered, and your callbacks won't be called anymore.
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:
/** * @typedef {'created'|'modified'|'deleted'|'moved'|'root-changed'|'cloned'|'unknown'} FsEventsEvent * @typedef {'file'|'directory'|'symlink'} FsEventsType */{"event": "created",// {FsEventsEvent}"path": "file.txt","type": "file",// {FsEventsType}"changes": {"inode": true,// Had iNode Meta-Information changed"finder": false,// Had Finder Meta-Data changed"access": false,// Had access permissions changed"xattrs": false// Had xAttributes changed},"flags": 0x100000000}
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.
请发表评论