Bun реализует модуль node:fs, включая функцию fs.watch для прослушивания изменений файловой системы.
Этот блок кода прослушивает изменения файлов в текущей директории. По умолчанию эта операция является поверхностной, что означает, что изменения в файлах в подкаталогах не будут обнаружены.
import { watch } from "fs";
const watcher = watch(import.meta.dir, (event, filename) => {
console.log(`Обнаружено ${event} в ${filename}`);
});Для прослушивания изменений в подкаталогах передайте опцию recursive: true в fs.watch.
import { watch } from "fs";
const watcher = watch(import.meta.dir, { recursive: true }, (event, relativePath) => {
console.log(`Обнаружено ${event} в ${relativePath}`);
});Используя модуль node:fs/promises, вы можете прослушивать изменения с помощью for await...of вместо обратного вызова.
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.
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.