Bun 实现了 node:fs
模块,包括用于侦听文件系统更改的 fs.watch
函数。
此代码块侦听当前目录中文件的更改。默认情况下,此操作是浅层的,这意味着不会检测到子目录中文件的更改。
import { watch } from "fs";
const watcher = watch(import.meta.dir, (event, filename) => {
console.log(`Detected ${event} in ${filename}`);
});
要侦听子目录中的更改,请将 recursive: true
选项传递给 fs.watch
。
import { watch } from "fs";
const watcher = watch(
import.meta.dir,
{ recursive: true },
(event, filename) => {
console.log(`Detected ${event} in ${filename}`);
},
);
使用 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(`Detected ${event.eventType} in ${event.filename}`);
}
要停止侦听更改,请调用 watcher.close()
。当进程收到 SIGINT
信号(例如当用户按 Ctrl-C 时)时,通常会这样做。
import { watch } from "fs";
const watcher = watch(import.meta.dir, (event, filename) => {
console.log(`Detected ${event} in ${filename}`);
});
process.on("SIGINT", () => {
// close watcher when Ctrl-C is pressed
console.log("Closing watcher...");
watcher.close();
process.exit(0);
});
有关在 Bun 中使用 Uint8Array
和其他二进制数据格式的更多信息,请参阅 API > 二进制数据 > 类型化数组。