Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Oak Assistant 更新日志

当前扩展3.5.0
最新 tagv3.5.0
Marketplace IDoak-team.oak-assistant-new

3.5.0(2026-07-25)

已发布复用 Oak 组件的本地 render 也能继承原组件的 props 合同。

复用组件的 Render Props

  • 当本地 index.ts 使用 import OakComponent from '某个组件'; export default OakComponent; 直接转发已有 Oak 组件时,同目录的标准 render 可以继承原组件对应平台 render 的 props,不必重新手写 WebComponentProps
  • 本地源码组件会继续追踪到真正的 OakComponent({...}) 定义;已发布的依赖包则从 web.d.tsrender.native.d.tsrender.desktop.d.ts 等平台 render 声明读取合同。
  • 编辑器支持继承字段的补全、hover、诊断和定义跳转。平台专用声明不存在时,会按 CLI 的平台规则回退,例如 web.pc -> webrender.android -> render.nativerender.windows -> render.desktop -> web.pc -> web
  • 识别是有意收紧的:默认导入必须命名为 OakComponent,并由 export default OakComponent 直接导出。改名导入、二次赋值或动态包装不会被猜测为复用合同。

3.4.0(2026-07-24)

已发布Native render 获得 Sass Module 编辑期类型与样式诊断。
  • render.native.tsxrender.ios.tsxrender.android.tsx 中默认导入的 Sass/SCSS Module 支持 class 补全、hover、定义跳转和错误诊断。
  • 插件使用 Dart Sass 解析变量、partial、@use、import、alias 和 source map,并把可导出的 class 类型约束为 React Native 的 ViewStyle & TextStyle & ImageStyle

3.0.0 - 3.3.2(2026-07-18 至 2026-07-22)

已发布Oak 编辑期检查从小程序 XML 扩展为实体、render、Less 和 i18n 的完整语言服务。

实体 Schema 即时诊断

  • 插件会发现当前 Oak 项目直接拥有的 src/entities/*.ts / *.tsx,即时检查 Schema 继承、属性、反向关系、Action、State、ActionDef、Relation、entityDesc、locale、index、多继承冲突和系统保留名称。
  • 同一实体的独立错误会同时显示为 TS9300 - TS9327,不再像领域生成器一样只报告第一个错误;分析器自身异常使用 TS9399
  • 实体分析按 tsserver Program、项目根和版本缓存,多项目工作区不会把另一个项目的实体或 locale 混入当前项目。
  • 这项能力只读源码,不修改生成目录;npm run make:domain 和正式构建仍是最终结论。

Render Props 与 Less Module

  • web.tsxweb.pc.tsxweb.mobile.tsxrender.desktop.tsxrender.native.tsx 等标准 render 会直接使用同目录 OakComponent 推导出的精确 props。
  • propertiesdataformDatamethods 和 Oak 注入字段都能参与补全、hover、定义跳转和诊断;不再需要手写宽泛 WebComponentProps
  • 默认导入的 *.less 会生成精确 CSS Module 类型,支持相对 import、tsconfig alias、node_modules、连字符 class 与 camelCase 访问。
  • Less 作用域理解 compound selector、后代/子代/兄弟选择器、:is:where:not:local:global、Fragment、条件 JSX 和本地 helper 调用链。只有在所有可达挂载位置都满足父选择器时,嵌套 class 才被视为合法。
  • class hover 会显示真实 Less 声明,Ctrl+点击跳到定义;找不到 class 或挂载作用域错误时直接在 render 中显示诊断。

WXML/XML 语言服务

  • 支持标签、原生属性、事件、微信指令、usingComponentscomponentGenerics、模板 import/include、资源路径、Rainbow Tags 与格式化。
  • 对标签配对、wx:if/elif/elsewx:for 词法作用域、wx:key、class、资源、事件方法和组件属性执行诊断。
  • 虚拟 TSX 会保留循环项、dataset、事件和组件 props 的真实 TypeScript 类型,并把补全、hover、定义和诊断映射回 XML/WXML。
  • Oak 组件与微信原生 Component 会被区分;只有 Oak 组件获得 oakPathoakId 等 runtime props。
  • 插件使用 VSIX 内置的 Oak CLI 编辑器 runtime,不读取项目旁边的 CLI checkout、全局 CLI 或 OAK_CLI_ROOT,从而保证扩展发布版本的行为可复现。

i18n 检查与跳转

  • 标准 render 的 t(...)、OakComponent 的 this.t(...) 和 XML/WXML 的 t(...) 使用同一套检查。
  • 支持组件 locale、common::keyentity:key;缺失 key、动态 key 和 placeholder 参数问题会显示 warning。
  • hover 会逐行显示已有语言文本,静态 key 可以直接跳到对应 JSON 字段;动态或缺失 key 不生成虚假链接。

调试和性能

  • oak-assistant.debug.enabled: true 时,WXML 虚拟文件写入 node_modules/.cache/oak-mp-debug,render、合同、Less 虚拟类型和 source map 写入 node_modules/.cache/oak-render-debug
  • 调试产物按最近 Oak 项目根组织,支持父目录多项目 workspace;这些文件不是源码,不应提交。
  • 3.2.7 之后减少后台重复分析,并增加真实 VS Code Extension Host 性能测试,编辑器诊断不会无条件扫描整个父工作区。

常用命令

命令用途
oak-assistant: Reload Metadata重新读取小程序组件 metadata 并刷新诊断
oak-assistant: Show Status查看项目、TypeScript、metadata 和组件发现状态
oak-assistant: Show Current Props查看当前组件属性的类型来源
oak-assistant: Pick Current Prop打开当前标签的属性选择与补全
oak-assistant: Toggle Component Tag Hover切换组件标签的完整属性 hover

使用边界

TypeScript 版本:完整实体语义和 render props 集成依赖 tsserver plugin。当前 TypeScript 7 / tsgo 不能加载同等插件,应在 VS Code 中选择项目的 TypeScript 6 或更低版本并关闭 js/ts.experimental.useTsgo。tsgo 下仍保留 metadata、原生组件和基础 XML 能力。
插件不是构建替代品:编辑器只检查当前项目和当前打开文件的语言服务状态;提交前仍需执行项目的 npm run buildmake:domain 和目标平台构建。

完整安装与排错步骤见开发前必装:Oak Assistant