JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 58213
  • Score
    100M100P100Q141953F
  • License MIT

"A simple recursive directory watcher."

Package Exports

  • simple-watcher

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (simple-watcher) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Simple Watcher

A simple recursive directory watcher.

But why?

I know there's plenty of them out there, but most don't seem to care about the recursive option of Node's fs.watch(), which significantly improves performance on the supported platforms, especially for large directories.

Features:

  • Dead simple and dead lightweight.
  • No dependencies.
  • Leverages the recursive options on OS X and Windows; uses a fallback for other platforms.
  • Does not care about Windows reporting multiple changes for one file (a simple workaround for this below).

Usage

Basic example:

const watch = require('simple-watcher')

watch('/path/to/directory', (filePath) => {
  console.log(`Changed: ${filePath}`)
})

WinAPI's ReadDirectoryChangesW double reporting fix:

const watch = require('simple-watcher')

let last = { filePath: null, timestamp: null }
let delta = 300 // Adjust if needed.

watch('/path/to/directory', (filePath) => {

  // Skip if the last change within the delta time was the same.
  let now = Date.now()
  if (filePath === last.filePath && now - last.timestamp < delta) {
    return
  }

  // Save the change.
  last.filePath = filePath
  last.timestamp = now

  console.log(`Changed: ${filePath}`)
})