文件系统提供程序.监视函数中"excludes"选项的格式



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

文档只说...

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

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

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

uri:uri- 要监视的文件的 uri。

选项:{排除:字符串[],递归:布尔} - 配置监视。

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

顺便说一句,我可以忽略这些watch电话并通过onDidChangeFile每次触发事件,发生一些事情..?

我认为excludes通常是glob 模式,例如来自"files.exclude"设置。在本期中,FileSystemProviderAPI 有一些示例,例如:

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

根据 API 文档,VSCode 的 glob 模式语法定义如下:

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

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

最新更新