# Vetur (opens new window)

# 功能

  • 根据大标签的type,做不同处理:高亮 / lint
  • 自动补全 component names 和 attributes

# 工程

  • vuepress 为文档工具
    • 分支 gh-pages
    • md文档正常编辑,增加vuepress配置
    • 需要更新文档时,执行脚本
      1. 执行build;
      2. 在交付件文件夹构建git环境;
      3. 强推到分支;
      4. 清除交付件

    源码与交付件分离;交付件分支无需git跟踪

  • husky + lint-staged + (tslint + prettier) 为自动语法lint
  • ts 为编程语言和编译工具
    • 入口配置文件 ./tsconfig.json => references
    • scripts、client、server、test 四个模块不同编译配置,都继承(extends) ./tsconfig.options.json
      • scripts: 默认语法文件导出脚本
      • test: 测试

# 语言插件基础

# 实现细节

  • 定义激活插件时机 packages.json.activationEvents = 'onLanguage:vue'
  • server
    • createConnection()
  • client
    • new LanguageClient(id, name, ServerOptions, LanguageClientOptions)
    • client.start()
  • mode 划分

    vue,pug,'vue-html',css,postcss,scss,less,stylus,javascript,typescript,tsx

    1. 获取文档 doc: TextDocument - new TextDocuments().listen(connection).get(uri)
    2. 判定mode
      1. 解析(文本扫描,正则匹配)整个文本 doc.getText(),构成‘位置-mode’组合
      2. 根据用户当前聚焦位置 position 确定 mode
  • 功能

    不同 mode 具有类似功能,但实现不同

    • connection.onCompletion
    • connection.onDefinition
      • html: 只取当前文件定义的子组件,且有.d.ts文件

        解析 script mode 时,用 ts 编译文件,获取 export 的 components 内容

    • connection.onHover
    • ...
最后更新: 1/12/2023, 1:44:05 PM