2.4.x如何弄全局类

我看你build_dts脚本也用了tsc的命令 :sweat_smile:
具体是 npx -p typescript tsc
那个不就是为了把项目编译出d.ts,然后再通过npx api-extractor run --local --diagnostics
来获取里边的api吗 我是这么去理解的,不过我在用这个脚本思路去构建我的脚本时遇到几个问题
1.tsc这个命令并不能完全帮助我把项目的ts文件全部编译成.d.ts,里边会报出cc的引擎库找不到,可能就是像你说的那个第三方库依赖问题,最终结果就是那个带有cc引用的文件ts会编译不出.d.ts
2.就是api-extractor接口问题,大致就是找不到路径什么的,应该是跟api-extractor.json的配置不正确相关,但是我是看了mk的示例去把路径改成自己的
比如 “mainEntryPointFilePath”: “…/…/xx.d.ts”, 改成了相对路径 (.d.ts应该是基于问题1所生成好的合并文件吧)
3.prettier的格式化问题,主要就是使用prettier.format时报出,具体问题就是我之前描述的一样,我也尝试过用一个简单几行的json文件让它去执行也是失败 然后我主要怀疑.prettierrc.json的配置实现,也同样参考mk的,基本我都没改照搬到自己的目录下
综上所述我的排查方向主要在两个json文件当中 npm包肯定是装了的 环境变量也专门去设了 也是全局安装 目前还在纠结当中 :rofl:
最新进展:
之前一直尝试用creator.d.ts来试不成功,但是用自己的自定义类弄出来的.d.ts就可以,
估且认为问题2算是解决,但是问题1的问题让我无法生成合并为一个完整的.d.ts让我很困惑。
另外就是目前通过api-extractor打出来的的包跟tsc生成好像没什么区别
最新进展2:
目前问题1解决了,只需要在入口文件加上/// 就可以了
现在回到问题2中 这个npx api-extractor run --local --diagnostics 这个命令是只能编译一个.d.ts吗
意思是我需要先提前组装好零散的.d.ts文件合成一个最终的.d.ts再交给这个命令处理吧
我尝试了几个.d.ts文件通过这个命令出来的结果是两个文件几乎没有区别 只是最后多了个export { }
这让我很是费解

还不如直接去看麒麟子的tgx

目前已经完成整合项目中的ts文件,重新生成一个.d.ts,然后各个ts写逻辑也不需要再import
但是creator编辑器会报

  • load script [./assets/script/xxxxxx] failed : ReferenceError: xxxxx is not defined

我的意思是单d.ts文件,是所有的d.ts整合

和声明文件无关啊 这是模块加载顺序的问题

恕我直言,之前看过,感觉甚至没有论坛其他框架好

论坛里框架话题的热度一言难尽 :joy:

你可以暂时忽略第三个格式化问题,那是我为了生成的d.ts好查看加的逻辑

第二个问题是,api-extractor的作用和你想的差不多,就是将所有引用的d.ts整合为一个,tsc也可以但是有我上面说的问题,入口d.ts是需要引用其他d.ts,才能整合其他的d.ts文件,这个和模块结构有关,你可以查看MK的mk_export.ts文件,使用一样的导出方式就可以了

另外你可以直接去api-extractor的官网查看文档,比我说的详细

另外编辑器报错的原因是你没有在全局注册,例如self.mk = mk_export导出的内容,这就是在全局注册,你可以参考mk_init.ts

还有问题可以点我头像加群讨论

框架这东西最好自己弄一个 借鉴下别人写的好的地方就行

我目前已经成功输出.d.ts 放在跟creator.d.ts一个目录 但是编辑器会报出load xxx脚本 fail之类 而且很多
但是编辑器已经不会报错了 仿佛creator不认识这个.d.ts 这个是什么原因
而且还有很多挂脚本的预制体或者节点都会报某些脚本出问题 不知道是不是没有import后creator就不认识脚本了
你所说的全局注册是指定在入口import吗这个.d.ts还是怎么 我尝试过用///
也试过import这个生成后的dts文件名"xxx"
要么让我添加一个命名空间 但cocos不认
要么就是各个文件不能允许出现export 然后直接全局就能使用 但cocos同样不认