Формат опции «исключает» в функции FileSystemProvider.watch - PullRequest
2 голосов
/ 28 марта 2019

Я хочу реализовать FileSystemProvider интерфейс (который должен работать с некоторым внешним REST API).Но я не уверен насчет формата параметра excludes в функции watch.

Документы только говорят ...

watch (uri: Uri, options: {exclude: string [], recursive: boolean}): Одноразовый

Подписаться на события в файле или папке, обозначенные uri.

Редактор вызовет эту функциюдля файлов и папок.В последнем случае параметры отличаются от значений по умолчанию, например, какие файлы / папки следует исключить из просмотра и следует ли просматривать подпапки, подпапки и т. Д. (recursive).

uri:Uri - Uri файла для просмотра.

опции: {исключает: строка [], рекурсивный: логический} - конфигурирует часы.

Я думаю о формате, используемом в .gitignore файлах с (двойными) звездочками, например **/logs, но я просто догадываюсь ...

И, кстати, могу ли япросто игнорируйте эти watch звонки и запускайте событие через onDidChangeFile каждый раз, когда что-то происходит ..?

1 Ответ

1 голос
/ 28 марта 2019

Я думаю, excludes обычно шаблоны глобуса , например, из настройки "files.exclude". В этом выпуске есть несколько примеров для FileSystemProvider API, в частности , например:

watch(Uri.file('/path/to/folder', {
    recursive: false,
    excludes: ["**/node_modules/**", ".git/**"]
});

В соответствии с документами API синтаксис шаблона глобуса VSCode определяется следующим образом:

  • * для соответствия одному или нескольким символам в сегменте пути
  • ? для сопоставления с одним символом в сегменте пути
  • ** для соответствия любому количеству сегментов пути, включая ни одного
  • {} для группирования условий (например, **/*.{ts,js} соответствует всем файлам TypeScript и JavaScript)
  • [] для объявления диапазона символов для сопоставления в сегменте пути (например, example.[0-9] для сопоставления example.0, example.1,…)
  • [!...] для отмены диапазона символов для сопоставления в сегменте пути (например, example.[!0-9] для сопоставления example.a, example.b, но не example.0)

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

...