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