Мне нужно добавить поддержку этой функции в мое приложение. Моя текущая реализация очень проста:
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. Поэтому, если файл в наблюдаемом каталоге имеет расширение из списка - отправьте уведомление, если нет - ничего не делайте.
Я видел аналогичный вопрос qaru.site/questions/1660086/..., но это не то, что мне действительно нужно.
Фильтрация внутри функций обратного вызова выглядит не очень хорошо, но я не вижу других вариантов. Просьба сообщить.
Спасибо.
Спасибо @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);
acceptedFileExtensions.forEach(ext => chokidar.add("**/*" + ext)
?chokidar.watch()
.