FileSystemProvider.watch函数中“excludes”选项的格式

问题描述 投票:2回答:1

我想实现FileSystemProvider interface(应该使用一些外部REST API)。但我不确定excludes函数中watch参数的格式。

文档只说......

watch(uri:Uri,options:{excludes:string [],recursive:boolean}):Disposable

订阅由uri表示的文件或文件夹中的事件。

编辑器将为文件和文件夹调用此函数。在后一种情况下,选项与默认选项不同,例如要观看哪些文件/文件夹以及是否应该观看子文件夹,子子文件夹等(recursive)。

uri:Uri - 要观看的文件的uri。

options:{excludes:string [],recursive:boolean} - 配置手表。

我正在考虑.gitignore文件中使用的格式与(双)星号,如**/logs,但我只是在猜...

我可以通过watch每次忽略这些onDidChangeFile电话和火灾事件,有些事情发生了吗?

visual-studio-code vscode-extensions
1个回答
1
投票

我认为excludes通常是glob模式,例如来自"files.exclude"设置。有一些FileSystemProvider API的例子,特别是in this issue,例如:

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

According to the API docs,VSCode的glob模式语法定义如下:

  • *匹配路径段中的一个或多个字符
  • ?匹配路径段中的一个字符
  • **匹配任意数量的路径段,包括无
  • {}分组条件(例如**/*.{ts,js}匹配所有TypeScript和JavaScript文件)
  • []声明在路径段中匹配的一系列字符(例如,example.[0-9]匹配example.0example.1,......)
  • [!...]否定在路径段中匹配的一系列字符(例如,example.[!0-9]匹配example.aexample.b,但不匹配example.0

如果您选择不这样做,我猜您可以自由地不支持自定义文件系统提供程序中的排除,但如果不遵守排除设置,则可能会使用户感到困惑。如果排除包含大量文件,则可能还会对性能产生负面影响,具体取决于提供程序的实现方式。

© www.soinside.com 2019 - 2024. All rights reserved.