يُطبق 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 > البيانات الثنائية > مصفوفات Typed للحصول على مزيد من المعلومات حول العمل مع Uint8Array وتنسيقات البيانات الثنائية الأخرى في Bun.