Does fs.watch in Node.js listen to changes in hidden folders like .git?

Yes fs watch listens to hidden folders.

I was running custom logic in a file system watcher with recursive: true. Since my watcher also observed the .git folder, running Git commands inside the watcher created a feedback loop: the Git commands modified the .git folder, which triggered the watcher again, and so on.

Fix: Ignore changes in the .git folder:

const watcher = fs.watch(dir, { recursive: true }, (eventType, filename) => {
  if (filename && (filename.startsWith(".git") || filename.includes(`${path.sep}.git`))) {
    console.log("Git folder changed, ignoring...");
    return;
  }

  throttledNotify();
});

Somewhere in throttledNotify i was running const stdout = await runGitCommand(["status", "--porcelain"], dir); which causes the infinite feedback loop

Read more here: Source link