Visual studio code VSCode动态JSON模式验证
我已经为web应用程序配置构建了一个项目。它包括(从TypeScript生成的)JSONSchema。为了简化,用户可以配置表单-字段顺序(字符串[])、隐藏字段(字符串[])等。JSON Schmeas对不太熟悉配置的用户非常有帮助,它可以验证配置错误可能导致的一些错误 但它们不能在任何情况下都有所帮助—在这些字符串数组中—用户可以放置任何字符串,模式将是有效的 我想做的是一些动态验证,当用户打开字段顺序的Visual studio code VSCode动态JSON模式验证,visual-studio-code,jsonschema,vscode-extensions,Visual Studio Code,Jsonschema,Vscode Extensions,我已经为web应用程序配置构建了一个项目。它包括(从TypeScript生成的)JSONSchema。为了简化,用户可以配置表单-字段顺序(字符串[])、隐藏字段(字符串[])等。JSON Schmeas对不太熟悉配置的用户非常有帮助,它可以验证配置错误可能导致的一些错误 但它们不能在任何情况下都有所帮助—在这些字符串数组中—用户可以放置任何字符串,模式将是有效的 我想做的是一些动态验证,当用户打开字段顺序的[时,他必须从字段列表中进行选择,这些字段将从API中获取 例如,当您在package.
[
时,他必须从字段列表中进行选择,这些字段将从API中获取
例如,当您在package.json依赖项中键入packageName:“
”时,它会获取给定包的版本
我想,我必须为此做一些VSCode扩展,但我不知道从哪里开始。有人能给我指点方向吗?如果有人使用实时JSON模式验证,我将不胜感激。通过挖掘源代码找到答案。搜索了所有包含
package.JSON
和dependencies
(regex search(package.json[\s\s\n]*dependencies)|(dependencies[\s\s\n]*package.json)
)并找到了一个类PackageJSONContribution
,这正是我要找的
然后我使用yo-code
做了一个简单的扩展(如示例中的)
一些接口和类我无法从vscode
导入,我只是为我的扩展制作了一个本地副本。制作了我自己的类FooJSONContribution
,唯一的区别是-
它的getDocumentSelector()
函数更改为
public getDocumentSelector():vscode.DocumentSelector{
返回[{language:'json',scheme:'*',pattern:'**/foo.json'}];
}
调整了扩展名package.json
activationEvents
,并添加了“onLanguage:json”
(这可以优化)
已调整通过添加
const contribution=new FooJSONContribution(xhr,true);
const DisposableCompletionTemprovider=vscode.languages.RegisterCompletionImprovider(
contribution.getDocumentSelector(),
新的JSONCompletionTemprovider(贡献),
'"',
':'
);
context.subscriptions.push(DisposableCompletionTemprovider);
就是这样。所有的foo.json
文件现在都像package.json
文件一样工作-
我现在需要做的事情-调整FooJSONContribution.ts
的代码,以满足我自己的需要、我自己的API和我自己的文件
我在这里上传了这个例子