You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为<vue-component />形式的Vue组件实现语法高亮?

Vue 自定义自闭合组件语法高亮配置方案

问题根因

  • 语法高亮失效和Prettier无关:Prettier仅负责代码格式化逻辑,不参与编辑器代码token识别、语法着色的流程,不需要调整Prettier核心配置解决高亮问题。
  • 问题根源在Vetur的默认解析规则:Vetur内置的vue-html语法解析器,默认仅对原生HTML标签、Vue官方内置组件、带属性/子节点的自定义组件、大驼峰命名的自定义组件触发高亮匹配,对纯kebab-case写法的无属性自闭合组件<xxx-yyy />存在识别遗漏,和部分团队要求的短横线命名自闭合组件规范存在冲突。

分步配置方案

1. 修正Vetur基础解析配置

打开VS Code的用户/工作区设置,进入settings.json文件,添加以下配置,让Vetur优先使用项目本地的Vue编译器解析SFC文件,避免内置解析器版本不匹配导致的识别异常:

{
  "vetur.useWorkspaceDependencies": true,
  "vetur.validation.template": false,
  "vetur.format.defaultFormatter.html": "prettier"
}

配置完成后通过命令面板执行Vetur: Restart Vetur Server重启Vetur服务,先验证基础识别是否恢复。

2. 自定义高亮匹配规则(第一步未生效时使用)

如果重启后kebab-case自闭合组件仍然没有高亮,直接在settings.json中追加TextMate语法规则,强制匹配自定义组件标签的着色逻辑:

"editor.tokenColorCustomizations": {
  "textMateRules": [
    {
      "scope": "meta.tag.custom.vue entity.name.tag",
      "settings": {
        "foreground": "#569cd6",
        "fontStyle": ""
      }
    }
  ]
}

上述色值可替换为你当前使用的代码主题中,原生组件/HTML标签对应的高亮十六进制色值,保证视觉风格统一。

3. 对齐Prettier格式化规则

为了避免Prettier格式化时自动改写组件写法,违反团队编码规范,需要在项目根目录的.prettierrc配置文件中添加以下规则,强制保留短横线命名、自闭合的组件写法:

{
  "htmlWhitespaceSensitivity": "ignore",
  "vueIndentScriptAndStyle": false,
  "attributeNameCase": "kebab-case",
  "tagNameCase": "kebab-case",
  "htmlSelfClosing": "all"
}

配置完成后重启编辑器,即可实现所有按团队规范编写的<vue-component />类自定义组件正常显示语法高亮,且格式化时不会被改写为不符合规范的写法。

验证方法

在.vue文件的template块中写入无属性的kebab-case自闭合组件,如<user-info-card />,不需要添加任意属性、不需要改写为大驼峰写法,即可看到组件标签正常高亮,执行格式化操作后写法保持不变。


内容的提问来源于stack exchange,提问作者Chris McCoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:24:25