我想实现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"
设置。在本期中,FileSystemProvider
API 有一些示例,例如:
watch(Uri.file('/path/to/folder', {
recursive: false,
excludes: ["**/node_modules/**", ".git/**"]
});
根据 API 文档,VSCode 的 glob 模式语法定义如下:
*
匹配路径段中的一个或多个字符?
匹配路径段中的一个字符**
匹配任意数量的路径段,包括无路径段{}
对条件进行分组(例如**/*.{ts,js}
匹配所有 TypeScript 和 JavaScript 文件)[]
声明要在路径段中匹配的字符范围(例如,example.[0-9]
在example.0
、example.1
、...[!...]
否定路径段中要匹配的一系列字符(例如,example.[!0-9]
匹配example.a
、example.b
,但不example.0
)
我想如果您选择不支持自定义文件系统提供程序中的排除,您可以自由地不支持排除,但是如果不遵守他们的排除设置,可能会让用户感到困惑。如果排除项包含大量文件,则也可能对性能产生负面影响,具体取决于提供程序的实现方式。