deno.com

監看檔案系統

在 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();
}
在實際應用程式中,應用程式很少需要立即對每個變更做出反應。事件會被重複,並且相同的變更會分派多個事件。為了規避這個問題,我們可以「debounce」我們的函式。
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://deno-docs.dev.org.tw/examples/scripts/watching_files.ts

您找到需要的資訊了嗎?

隱私權政策