watch
高性能、AI 友好的顶级文件监听库。支持递归监听、.gitignore 语义的路径过滤、事件防抖以及极简的 API。
特性
- 递归监听: 自动监听子目录及其新创建的子目录。
- 顶级过滤能力:
Types: 仅监听指定后缀的文件。ExcludeTypes: 排除指定后缀的文件。Excludes(Gitignore 语义): 使用高性能 Glob 引擎(github.com/gobwas/glob),支持**/node_modules/**、*.log等复杂模式,自动处理目录边界。
- 事件防抖 (Debounce): 有效合并编辑器保存等产生的并发碎片事件,提升业务性能。
- AI 友好: 提供结构化的
Event对象及拆解好的参数。 - 极简接口:
EasyStart快速上手。 - 高性能: 纯 Go 实现,无 CGO 依赖,基于
fsnotify与go/timer高性能引擎。
安装
go get apigo.cc/go/watch
API 指南
Start
启动高级监听器。
config := watch.Config{
Paths: []string{"./src"},
Types: []string{".go", ".js"},
Excludes: []string{"**/node_modules/**", "vendor/**", "*.log"},
Debounce: 100 * time.Millisecond, // 开启防抖
}
w, err := watch.Start(config, func(e *watch.Event) {
fmt.Printf("Path: %s, Type: %s, IsDir: %v\n", e.Path, e.Type, e.IsDir)
})
EasyStart
启动极简监听器。
w, err := watch.EasyStart("./data", func(path string, et watch.EventType) {
fmt.Printf("File %s has event %s\n", path, et)
})
Watcher 方法
Stop(): 停止监听并释放资源(包括清理防抖定时器)。Add(path string): 动态添加监听路径。Remove(path string): 动态移除监听路径。WatchList(): 获取当前正在监听的所有路径。
Description
Languages
Go
100%