在VSCode中使用两个YAML格式化器



我相信很多人都遇到过这个问题,因为我不可能是唯一一个。

在Visual Studio代码中,我使用Kubernetes和Azure Devops YAML。两者的格式完全不同。要使用每个我发现我必须卸载其他扩展。

有没有人知道,当你编写Azure DevOps管道或Kubernetes集群时,如何将VSCode结合在一起?

我确实做了@flyx建议的,但昨天晚上很晚了,没有发布我的答案,但我现在要做。

我算出了以下几点。

  1. VSCode似乎无法解决的模式是在http://www.schemastore.org/json/composer,如果你试图引用JSON全局词
  2. 您可以让不同的模式跨不同的技术工作。例如,Kubernetes, Azure DevOps和Ansible是我现在设置的。
  3. 你必须在你的YAML文件上有一个结束语法,这样才能正常工作。例如,我的Ansible YAML文件现在都以_a结尾。我的Kubernetes YAML文件都以_kube结尾。yaml和我的Azure DevOps yaml文件都以默认语法。yml
  4. 结束。

弄清楚这三件事之后,我就可以设置我的环境了,允许inteli感知和JSON语法检查器提取所需的不同模式。我还发现Kubernetes的Google Cloud Code扩展实际上比微软的更好,它比你构建Kubernetes YAML文件要快得多。

同样为了这个工作,你需要先保存文件,用正确的扩展名让VSCode知道你正在研究某种技术,并拉下正确的Schema。另外,要注意.vscode文件,这个文件有时会有点傻,没有放入正确的模式,所以要密切关注它。如果它不能删除它,关闭VSCode并重新打开,你应该很好去。

这里是我的JSON设置为任何人想要这样做:

{
"redhat.telemetry.enabled": true,
"yaml.schemas": {
"https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/master/service-schema.json": "*.yml",
// "http://www.schemastore.org/json/composer": ["/*"],
// "https://raw.githubusercontent.com/apache/camel/main/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json" : "/_kube*.yaml", 
"kubernetes": ["/*.yaml"],
"https://json.schemastore.org/ansible-playbook" : "/_a*.yaml",
"https://json.schemastore.org/ansible-role-2.9" : ["^/roles/*/tasks/_a*.yaml", "^/tasks/_a*.yaml"]
},
"vs-kubernetes": {
"vscode-kubernetes.helm-path.windows": "C:\Users\Jason\.vs-kubernetes\tools\helm\windows-amd64\helm.exe",
"vscode-kubernetes.minikube-path.windows": "C:\Users\Jason\.vs-kubernetes\tools\minikube\windows-amd64\minikube.exe"
},
"files.associations": {
"**/ci/*.yml": "azure-pipelines"
},
"[azure-pipelines]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"yaml.schemaStore.url": "http://www.schemastore.org/api/json/catalog.json",
"cloudcode.yaml.crdSchemaLocations": [

],
"cloudcode.yaml.schemas": {

},
"cloudcode.yaml.yamlFileMatcher": "/_kube*.yaml",
}

用于此的扩展:

  1. redhat yaml
  2. 谷歌云代码
  3. <
  4. Azure管道/gh>
  5. Kubernetes Microsoft默认值(由于某些原因需要使redhat yml扩展正常运行)
  6. Ansible Yaml Schema(这不是一个扩展,这些只是从json模式存储下来,但确保你有正确的url,否则VSCode不解决它。)参见第1点。)

Azure pipeline的扩展名描述了如何通过设置"files.associations"将其设置为在特定文件上使用。

你可以用支持Kubernetes的扩展做类似的事情。

或者,您可以只使用后者,因为它支持自定义模式。你可以在这里找到Azure pipeline的模式;将其注册为模式,并设置与Azure文件匹配的glob模式。

最新更新