Bun

指南读取文件

使用 Bun 监视目录的更改

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 > 二进制数据 > 类型化数组