观看文件系统
在 Github 上编辑
在创建框架或 CLI 工具时,通常需要监视文件系统的更改。
监视文件系统最简单的方法是使用 Deno 内置的 watchFs。Deno.watchFs 返回一个 FsWatcher,它是一个异步可迭代对象。
let watcher = Deno.watchFs("./");
与异步可迭代对象交互的最简单方法是 javascript 的 for await of 语法。
for await (const event of watcher) {
console.log(">>>> event", event);
要停止监视器,我们可以简单地调用 `watcher.close()`
watcher.close();
}
在实际应用中,应用程序很少需要立即对每个更改做出反应。事件将被重复,并且相同的更改将分派多个事件。为了解决这个问题,我们可以“去抖动”我们的函数。
import { debounce } from "jsr:@std/async/debounce";
在这个特定案例中,我们使用标准库为我们完成这项工作。此函数最多每两百毫秒运行一次
const log = debounce((event: Deno.FsEvent) => {
console.log("[%s] %s", event.kind, event.paths[0]);
}, 200);
watcher = Deno.watchFs("./");
for await (const event of watcher) {
log(event);
}
使用 Deno CLI 在本地运行 此示例
deno run --allow-read https://docs.deno.org.cn/examples/scripts/watching_files.ts