yunke-yunfly / fast-typescript-to-jsonschema

typescript-to-jsonschema generates JSON Schema files from your Typescript sources.
MIT License
35 stars 2 forks source link

似乎不支持import npm包路径以及@别名路径 #21

Open dimple-smile opened 1 year ago

dimple-smile commented 1 year ago

用于解析的type.d.ts

import type { TableProps } from 'element-plus'
import type { ElTree as ElTreeProps } from 'element-plus/es/components/tree'

export interface Props extends TableProps<any> {
  /** 表格边框 */
  border?: boolean

  /** 测试引入tree的props */
  tree?: typeof ElTreeProps
}

export interface Emits {
  /** 表格行变化事件 */
  (e: 'update:current-page', currentPage: number): void
}

解析之后的结果

{
  "/Users/xiecp/das/das-fe/ui/src/das-fe/ui/packages/demo/src/type.d.ts": {
    "Props": {
      "type": "object",
      "properties": {
        "border": {
          "type": "boolean",
          "description": "表格边框"
        }
      },
      "additionalProperties": false,
      "extends": "TableProps"
    },
    "Emits": {
      "type": "object",
      "additionalProperties": false
    }
  }
}

结果说明

1.没有extends的TableProps的信息 2.没有ElTreeProps的信息 3.Emits也没有解析内部的参数信息

请问这些考虑支持吗?

wangweianger commented 1 year ago

你好这个计划有支持的 在3-4月份会支持

------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2023年1月18日(星期三) 中午11:06 收件人: @.>; 抄送: @.***>; 主题: [yunke-yunfly/fast-typescript-to-jsonschema] 似乎不支持import npm包路径以及@别名路径 (Issue #21)

用于解析的type.d.ts import type { TableProps } from 'element-plus' import type { ElTree as ElTreeProps } from 'element-plus/es/components/tree' export interface Props extends TableProps<any> { / 表格边框 */ border?: boolean /* 测试引入tree的props / tree?: typeof ElTreeProps } export interface Emits { / 表格行变化事件 */ (e: 'update:current-page', currentPage: number): void }
解析之后的结果 { "/Users/xiecp/das/das-fe/ui/src/das-fe/ui/packages/demo/src/type.d.ts": { "Props": { "type": "object", "properties": { "border": { "type": "boolean", "description": "表格边框" } }, "additionalProperties": false, "extends": "TableProps" }, "Emits": { "type": "object", "additionalProperties": false } } }
结果说明

1.没有extends的TableProps的信息 2.没有ElTreeProps的信息 3.Emits也没有解析内部的参数信息

请问这些考虑支持吗?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

dimple-smile commented 1 year ago

👌🏻关注一波,非常感谢您~

wangweianger commented 1 year ago

@dimple-smile 已支持 >= 0.0.7 版本

dimple-smile commented 1 year ago

ok~我看一下

dimple-smile commented 1 year ago

@dimple-smile 已支持 >= 0.0.7 版本

好像还是没有支持好

1.已经安装了v0.0.8,生成的Emits还是一样的,没有解析到里面的变量 2.还有增加了npm解析之后,速度慢了不少,应该是生产的依赖太深了,最后产生的json文件直接将近4万行。是不是需要增加配置项,或者读取tsconfig.json之类的?

我自己现在项目中改造了一下 1.自己替换了npm路径和@为相对路径,解析速度依然很快。 2.针对emits那种类型,用ts-morph单独解析了一遍,因为是截取代码文本片段单独解析,速度还可以接受。 3.组件内部解析也有参考https://github.com/vuejs/language-tools/tree/master/packages/vue-component-meta

wangweianger commented 1 year ago

@dimple-smile 是的查找npm type类型是很复杂的一个过程 最核心的耗时是解析了内部所有依赖项(这个还需要优化) 相关代码可以参考:typescript-to-file-datas.ts 文件 getTypeFileFromNpm 方法

对于 emits 这种,暂时还不支持 函数,类的解析 (这个是未来需要支持的)

dimple-smile commented 1 year ago

@dimple-smile 是的查找npm type类型是很复杂的一个过程 最核心的耗时是解析了内部所有依赖项(这个还需要优化) 相关代码可以参考:typescript-to-file-datas.ts 文件 getTypeFileFromNpm 方法

对于 emits 这种,暂时还不支持 函数,类的解析 (这个是未来需要支持的)

好的,会持续关注。