我想实现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
电话和火灾事件,有些事情发生了吗?
我认为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.0
,example.1
,......)[!...]
否定在路径段中匹配的一系列字符(例如,example.[!0-9]
匹配example.a
,example.b
,但不匹配example.0
)
如果您选择不这样做,我猜您可以自由地不支持自定义文件系统提供程序中的排除,但如果不遵守排除设置,则可能会使用户感到困惑。如果排除包含大量文件,则可能还会对性能产生负面影响,具体取决于提供程序的实现方式。