Skip to content

Bun implementa il modulo node:fs, inclusa la funzione fs.watch per ascoltare i cambiamenti del file system.

Questo blocco di codice ascolta i cambiamenti ai file nella directory corrente. Per impostazione predefinita questa operazione è superficiale, il che significa che i cambiamenti ai file nelle sottodirectory non verranno rilevati.

ts
import { watch } from "fs";

const watcher = watch(import.meta.dir, (event, filename) => {
  console.log(`Rilevato ${event} in ${filename}`);
});

Per ascoltare i cambiamenti nelle sottodirectory, passa l'opzione recursive: true a fs.watch.

ts
import { watch } from "fs";

const watcher = watch(import.meta.dir, { recursive: true }, (event, relativePath) => {
  console.log(`Rilevato ${event} in ${relativePath}`);
});

Usando il modulo node:fs/promises, puoi ascoltare i cambiamenti usando for await...of invece di un callback.

ts
import { watch } from "fs/promises";

const watcher = watch(import.meta.dir);
for await (const event of watcher) {
  console.log(`Rilevato ${event.eventType} in ${event.filename}`);
}

Per smettere di ascoltare i cambiamenti, chiama watcher.close(). È comune farlo quando il processo riceve un segnale SIGINT, come quando l'utente preme Ctrl-C.

ts
import { watch } from "fs";

const watcher = watch(import.meta.dir, (event, filename) => {
  console.log(`Rilevato ${event} in ${filename}`);
});

process.on("SIGINT", () => {
  // chiudi watcher quando viene premuto Ctrl-C
  console.log("Chiusura watcher...");
  watcher.close();

  process.exit(0);
});

Fai riferimento a API > File I/O per ulteriori informazioni sulla lavorazione con il file system in Bun.

Bun a cura di www.bunjs.com.cn