Skip to content

Bun реализует модуль node:fs, включая функцию fs.watch для прослушивания изменений файловой системы.

Этот блок кода прослушивает изменения файлов в текущей директории. По умолчанию эта операция является поверхностной, что означает, что изменения в файлах в подкаталогах не будут обнаружены.

ts
import { watch } from "fs";

const watcher = watch(import.meta.dir, (event, filename) => {
  console.log(`Обнаружено ${event} в ${filename}`);
});

Для прослушивания изменений в подкаталогах передайте опцию recursive: true в fs.watch.

ts
import { watch } from "fs";

const watcher = watch(import.meta.dir, { recursive: true }, (event, relativePath) => {
  console.log(`Обнаружено ${event} в ${relativePath}`);
});

Используя модуль node:fs/promises, вы можете прослушивать изменения с помощью for await...of вместо обратного вызова.

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

const watcher = watch(import.meta.dir);
for await (const event of watcher) {
  console.log(`Обнаружено ${event.eventType} в ${event.filename}`);
}

Для прекращения прослушивания изменений вызовите watcher.close(). Обычно это делается, когда процесс получает сигнал SIGINT, например, когда пользователь нажимает Ctrl-C.

ts
import { watch } from "fs";

const watcher = watch(import.meta.dir, (event, filename) => {
  console.log(`Обнаружено ${event} в ${filename}`);
});

process.on("SIGINT", () => {
  // закрыть watcher при нажатии Ctrl-C
  console.log("Закрытие watcher...");
  watcher.close();

  process.exit(0);
});

Обратитесь к документации API > Двоичные данные > Типизированные массивы для получения дополнительной информации о работе с Uint8Array и другими форматами двоичных данных в Bun.

Bun от www.bunjs.com.cn