softmixx background

Node.js Module

Javascript, Full Stack Development

node-watch in meiner Entwicklungsumgebung

[ 15.03.2021 | Alex]
Meine Entwicklungsumgebung ist verteilt auf mehrere Editor-, Debug- und Staging-Umgebungen. Wird eine Projektdatei editiert und gespeichert, so kopiert ein kleines node/JavaScript Tool die Datei automatisch in die jeweiligen anderen Projektordner.

In dem Script nutze ich dazu das Node.js Modul 'node-watch':

const watch = require("node-watch");

Überwacht werden damit alle Änderungen an den wesentlichen Projektdateien:

watcher = watch(localdirs, { recursive: true , 

  filter(f, skip) {
    if (/\.js$/.test(f) || /\.css$/.test(f) || /\.php$/.test(f) || /\.html$/.test(f) ) return true;
    return skip;
  }

} );


Mir ist es jedoch bisher nicht gelungen zu verhindern, dass der "watcher" viel zu oft und unerwünscht Ereignisse auslöst, z.B. beim Öffnen einer Datei mit einem bestimmten Editor.

Mein Lösung dafür ist, ein weiteres lokales Projektverzeichnis zwischenzuschalten, das die überwachten Dateien quasi spiegelt.

Damit kann ich nun den Timestamp der Datei mit der lokalen Kopie vergleichen und nur wenn dieser Wert sich unterscheidet, führt das Ereignis tatsächlich zu einem 'distribute' Vorgang.

fs.access(destfile, (err) => {

  if (!err) {

    let deststat = fs.statSync(destfile);

    if( deststat.mtimeMs == srcstat.mtimeMs ) return;

     ...