Go to file
pqcqaq 759f649647 更新readme 2024-11-04 22:09:55 +08:00
.vscode 自动创建文件 2024-10-19 20:31:25 +08:00
assets 更新图标和package.json 2024-10-19 21:59:08 +08:00
src 修改了默认配置项 2024-11-04 21:49:49 +08:00
syntaxes 新增wxml语言相关 2024-10-26 10:25:46 +08:00
.editorconfig entity tree panel 跳转到定义,lint等 2024-10-19 21:50:13 +08:00
.eslintignore entity tree panel 跳转到定义,lint等 2024-10-19 21:50:13 +08:00
.eslintrc.json entity tree panel 跳转到定义,lint等 2024-10-19 21:50:13 +08:00
.gitignore 初始化仓库 2024-10-18 21:20:39 +08:00
.npmrc 初始化仓库 2024-10-18 21:20:39 +08:00
.prettierrc entity tree panel 跳转到定义,lint等 2024-10-19 21:50:13 +08:00
.vscode-test.mjs 初始化仓库 2024-10-18 21:20:39 +08:00
.vscodeignore 初始化仓库 2024-10-18 21:20:39 +08:00
CHANGELOG.md 初始化仓库 2024-10-18 21:20:39 +08:00
README.md 更新readme 2024-11-04 22:09:55 +08:00
esbuild.js 试着写了一个ts server plugin 2024-11-01 13:33:25 +08:00
eslint.config.mjs 初始化仓库 2024-10-18 21:20:39 +08:00
package.json 更新版本号 2024-11-03 20:26:56 +08:00
pnpm-lock.yaml 尝试启用lsp 2024-10-23 15:58:01 +08:00
tsconfig.json 初始化仓库 2024-10-18 21:20:39 +08:00
vsc-extension-quickstart.md 初始化仓库 2024-10-18 21:20:39 +08:00

README.md

oak-assistant README

oak框架适配性插件为你的开发助力

当你在开发Oak框架的项目时是否经常遇到以下问题

  • 经常需要翻找Entity的定义和Schema文件费时费力。
  • oakPath拼错导致的白屏需要长时间的debug。
  • t的locale不知道到底该怎么写
  • 创建OakComponent的时候要新建一大堆文件太麻烦。
  • ......

那么你就需要这个插件来加速Oak项目的开发

配置项

{
  "projectDir": "./",
  "checker": {
    "onInvalidReturn": "warn",
    "onInvalidDestructuring": "error",
    "onNeedPromiseCheck": "error"
  },
  "trigger": {
    "onReturnLiteral": "warn",
    "onNoAsyncFn": "error",
    "onNoAwaitContext": "error"
  },
  "i18n": {
    "onMissingKey": "error",
    "onKeyBlank": "warn"
  },
  "oakComponent": {
    "onInvalidEntity": "error",
    "onInvalidIsList": "error",
    "onMissingDataAttrs": "warn",
    "onMissingMethods": "error"
  },
  "oakPath": {
    "onInvalidPath": "error"
  }
}
  • 类型:

    export type Level = 'ignore' | 'error' | 'warn' | 'info';
    
    export type OakConfiog = {
        projectDir: string;
        // checker配置
        checker?: {
            // 不合法的返回值(checker应该返回执行链或者结果)
            onInvalidReturn?: Level;
            // 不能为解构赋值(context调用不能解构)
            onInvalidDestructuring?: Level;
            // 需要判断Promise(context调用必须判断是否为Promise)
            onNeedPromiseCheck?: Level;
        }
        // 触发器配置
        trigger?: {
            // 返回值为字面量1
            onReturnLiteral?: Level;
            // fn不是async
            onNoAsyncFn?: Level;
            // 没有await context
            onNoAwaitContext?: Level;
        };
        // i18n配置
        i18n?: {
            // 缺少key
            onMissingKey?: Level;
            // key为空
            onKeyBlank?: Level;
        };
        // oak组件配置
        oakComponent?: {
            // entity无效
            onInvalidEntity?: Level;
            // isList无效
            onInvalidIsList?: Level;
            // 缺少data属性
            onMissingDataAttrs?: Level;
            // 缺少方法
            onMissingMethods?: Level;
        };
        // oak路径配置
        oakPath?: {
            // 路径无效
            onInvalidPath?: Level;
        };
    };
    
    

功能

  1. Panel面板

    点击左侧按钮打开oak entities面板

    • 你可以点击切换实体类显示范围,来指定是显示全部的实体类,还是只显示项目中定义的实体类

    • 点击展开某一个entity可以查看以下信息

      • 项目中所有跟此entity相关联的组件

      • 点击某一个组件可以快速跳转到其index.ts文件

      • 你也可以右键某一个组件,从项目中删除(此操作会删除整个组件所在的文件夹)

  2. 快速创建OakComponent

    • 你可以在src/pages或者src/components目录内的任何文件夹中右键创建OAK组件 接下来会引导你快速创建oak组件

    • 你也可以在Oak Entities的页面中对某一个实体项目组件点击右键可以快速在components中创建该entity对应的组件

    • 同时你也可以在Oak Entities中快速删除一个oak组件

  3. 随时跳转到Entity的定义或者Schema文件

    • 在Oak Entities窗口中你可以在实体名称上点击右键一键跳转。

  4. 实时检查oakPath的定义是否合法

    • 前提条件:请务必使用以下的使用形式来定义 固定的 oakPath

      `${oakFullpath}.attr`
      
    • 自动扫描

      • 插件会自动检查attr是否在当前组件所定义的entity的Schema属性中
    • 扫描范围

      • 必须是Oak组件
      • 必须定义组件的形参为WebComponentProps并且第二个参数为实体类的名称
    • 跳转到Schema定义

      • 如果attr是一个合法的属性可以点击跳转到当前entity的定义Schema

    • 属性提示

      • 在编写时,当你在${oakFullpath}的后面输入.就可以获得当前entity下的所有可选attr的提示

  5. i18n检查与跳转

    • 当打开或者编辑tsx文件时会自动扫描该文件下的所有的t方法调用并提供代码提示以及定义检查

    • 语法提示

      • 当在t()中输入任意引号的一种会提示您当前文件可用的所有i18n选项

    • i18n检查

      • 插件会根据您正在编辑的文件自动扫描公共命名空间所有实体类以及当前文件目录下的locales定义

      • 如果i18n的引用是合法的你可以点击跳转到定义

      • 如果i18n的引用不合法会显示警告信息

      • 立即创建i18n

        • 当找不到locale定义的时候可以点击快速修复在当前组件的locale中创建一个新的键值对
        • 如果当前组件下不存在locales文件夹会自动创建locales/zh_CN.json文件
  6. 对于WebComponentProps的泛型检查

    • 检查entity的名称是否与index.ts中定义的相同
    • 检查isList的参数是否与index.ts中相同
    • 检查所有的data属性是否在index.ts中的formData中有返回值或者已经定义在properties中
    • 检查所有的方法定义是否都在index.ts中的methods中
  7. 提供相关快速跳转功能

    1. 当entity""出现项目中已经定义的实体时,提供一键跳转到定义的功能
    2. 在WebComponentProps的data参数和methods参数中可以一键跳转到具体的定义位置
  8. 提供快速修复功能

    1. 在locales未定义的情况下可以一键修复在本地的locales目录中创建该键值对。

    2. WebComponentProps中的entity或者isList值错误可以一键修复。

    3. 当WebComponentProps中的data未定义或者methods不存在可以一键在index.ts中创建。

安装并使用

在插件市场搜索oak-assistant

启用插件后在oak项目内会自动扫描所有的entity

启动项目时分析entity

然后会扫描所有的componentsi18n信息等待全部加载完毕之后就可以开始快乐的编程了~