Skip to content

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.

Bun by www.bunjs.com.cn edit