Используйте Chokidar для просмотра файлов с определенными расширениями

1

Мне нужно добавить поддержку этой функции в мое приложение. Моя текущая реализация очень проста:

            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/..., но это не то, что мне действительно нужно.

Фильтрация внутри функций обратного вызова выглядит не очень хорошо, но я не вижу других вариантов. Просьба сообщить.

Спасибо.

  • 1
    Почему не что-то вроде acceptedFileExtensions.forEach(ext => chokidar.add("**/*" + ext) ?
  • 0
    Или передайте массив подстановочных знаков, основанных на этих расширениях, в chokidar.watch() .
Показать ещё 1 комментарий
Теги:
fs

1 ответ

0
Лучший ответ

Спасибо @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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню