Bun implementa el módulo node:fs, incluyendo la función fs.watch para escuchar cambios en el sistema de archivos.
Este bloque de código escucha cambios en archivos en el directorio actual. Por defecto, esta operación es superficial, lo que significa que los cambios en archivos en subdirectorios no se detectarán.
import { watch } from "fs";
const watcher = watch(import.meta.dir, (event, filename) => {
console.log(`Detectado ${event} en ${filename}`);
});Para escuchar cambios en subdirectorios, pasa la opción recursive: true a fs.watch.
import { watch } from "fs";
const watcher = watch(import.meta.dir, { recursive: true }, (event, relativePath) => {
console.log(`Detectado ${event} en ${relativePath}`);
});Usando el módulo node:fs/promises, puedes escuchar cambios usando for await...of en lugar de un callback.
import { watch } from "fs/promises";
const watcher = watch(import.meta.dir);
for await (const event of watcher) {
console.log(`Detectado ${event.eventType} en ${event.filename}`);
}Para dejar de escuchar cambios, llama a watcher.close(). Es común hacer esto cuando el proceso recibe una señal SIGINT, como cuando el usuario presiona Ctrl-C.
import { watch } from "fs";
const watcher = watch(import.meta.dir, (event, filename) => {
console.log(`Detectado ${event} en ${filename}`);
});
process.on("SIGINT", () => {
// cerrar watcher cuando se presiona Ctrl-C
console.log("Cerrando watcher...");
watcher.close();
process.exit(0);
});Consulta API > Datos binarios > Arrays tipados para más información sobre cómo trabajar con Uint8Array y otros formatos de datos binarios en Bun.