O Bun implementa o módulo node:fs, incluindo a função fs.watch para escutar alterações no sistema de arquivos.
Este bloco de código escuta alterações em arquivos no diretório atual. Por padrão, esta operação é superficial, o que significa que alterações em arquivos em subdiretórios não serão detectadas.
ts
import { watch } from "fs";
const watcher = watch(import.meta.dir, (event, filename) => {
console.log(`Detectado ${event} em ${filename}`);
});Para escutar alterações em subdiretórios, passe a opção recursive: true para fs.watch.
ts
import { watch } from "fs";
const watcher = watch(import.meta.dir, { recursive: true }, (event, relativePath) => {
console.log(`Detectado ${event} em ${relativePath}`);
});Usando o módulo node:fs/promises, você pode escutar alterações usando for await...of em vez de um callback.
ts
import { watch } from "fs/promises";
const watcher = watch(import.meta.dir);
for await (const event of watcher) {
console.log(`Detectado ${event.eventType} em ${event.filename}`);
}Para parar de escutar alterações, chame watcher.close(). É comum fazer isso quando o processo recebe um sinal SIGINT, como quando o usuário pressiona Ctrl-C.
ts
import { watch } from "fs";
const watcher = watch(import.meta.dir, (event, filename) => {
console.log(`Detectado ${event} em ${filename}`);
});
process.on("SIGINT", () => {
// fechar watcher quando Ctrl-C for pressionado
console.log("Fechando watcher...");
watcher.close();
process.exit(0);
});Consulte a documentação API > File I/O para mais informações sobre trabalhar com BunFile.