node-watch in meiner Entwicklungsumgebung
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;
...