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.
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.
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.
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.
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.