使用 Chokidar 监视具有特定扩展名的文件
Use Chokidar for watching over files with specific extentions
我需要在我的应用程序中添加对此功能的支持。
我目前的实现非常简单:
this.watcher.on("add", (pathName: string) => {
this.sendNotifyAction(new NotifyAction(PathEvent.Add, pathName));
}).on("change", (pathName: string) => {
this.sendNotifyAction(new NotifyAction(PathEvent.Change, pathName));
}).on("unlink", (pathName: string) => {
this.sendNotifyAction(new NotifyAction(PathEvent.Delete, pathName));
}).on("ready", () => {
this.sendReadinessNotification();
});
现在我想要这样的东西:
private acceptedFileExtensions: string[] = ['.txt', '.docx', '.xlx', ...]
并在 Chokidar 中使用这个扩展数组。因此,如果监视目录中的文件具有列表中的扩展名 - 发送通知,如果没有 - 什么都不做。
我看到了类似的问题,但这不是我真正需要的。
在回调函数中过滤对我来说不太好,但我没有看到其他变体。请指教
谢谢。
谢谢@robertklep,chokidar 使用数组。
所以我的代码看起来像:
private buildWildcardList(path:string): string[] {
let result: string[] = [];
_.each(this.acceptedFileExtensions, (extension: string) => {
result.push(path + '/**/*' + extension);
});
return result;
}
let wildcardList: string[] = this.buildWildcardList(path);
this.watcher = chokidar.watch(wildcardList, watchOptions);
我需要在我的应用程序中添加对此功能的支持。 我目前的实现非常简单:
this.watcher.on("add", (pathName: string) => {
this.sendNotifyAction(new NotifyAction(PathEvent.Add, pathName));
}).on("change", (pathName: string) => {
this.sendNotifyAction(new NotifyAction(PathEvent.Change, pathName));
}).on("unlink", (pathName: string) => {
this.sendNotifyAction(new NotifyAction(PathEvent.Delete, pathName));
}).on("ready", () => {
this.sendReadinessNotification();
});
现在我想要这样的东西:
private acceptedFileExtensions: string[] = ['.txt', '.docx', '.xlx', ...]
并在 Chokidar 中使用这个扩展数组。因此,如果监视目录中的文件具有列表中的扩展名 - 发送通知,如果没有 - 什么都不做。
我看到了类似的问题
在回调函数中过滤对我来说不太好,但我没有看到其他变体。请指教
谢谢。
谢谢@robertklep,chokidar 使用数组。 所以我的代码看起来像:
private buildWildcardList(path:string): string[] {
let result: string[] = [];
_.each(this.acceptedFileExtensions, (extension: string) => {
result.push(path + '/**/*' + extension);
});
return result;
}
let wildcardList: string[] = this.buildWildcardList(path);
this.watcher = chokidar.watch(wildcardList, watchOptions);