type2Lua 工程说明文档
type2lua 顾名思义就是将ts代码编译到lua。
当前版本仅兼容lua5.3及以上版本。
使用方法
tsconfig.json 配置
配置方式与ts2js环境基本相同,以下列举一些常见配置:
- compilerOptions.rootDir 被编译文件的根目录,里面的所有文件都会保持目录结构得编译到outDir目录。
- compilerOptions.outDir 最终导出的目录
- compilerOptions.rootDirs 里面的文件的根目录会指向rootDir 并编译到outDir目录,意味着rootDir中的文件可以通过相对引用的方式引用到rootDirs中的文件,在逻辑上rootDirs中的文件其实是rootDir中的文件。
- include 包含的文件列表,这里指的是真正被加载编译的文件。
- typelua.extName 自定义扩展名
//配置案例 "compilerOptions": "target": "esnext" "strict": true "esModuleInterop": true "experimentalDecorators": true "forceConsistentCasingInFileNames": true "skipLibCheck": true "rootDir": "./src" "rootDirs": "./src/gleetslibs" "outDir": "../Assets/Bundle/Lua" "include": "./src/**/*" "typelua": "extName": ".lua.txt"
编译
如果你是通过ccf安装的type2lua,则执行以下命令即可编译:
$ ccf type2lua #以当前目录下tsconfig.json的文件编译 $ ccf type2lua -w #持续编译项目 $ ccf type2lua --build '文件地址' #指定配置文件 $ ccf type2lua --libs #同时生成js环境基础库到rootDir目录
修改及发布
当你需要对js环境基础库进行修改时;
当你需要对type2lua编译器进行改进时;
你可以向我们获取type2lua工程的访问权限。其中包含一个自模块baselib,可以在此工程中修改js环境基础库的源代码。修改后按F5
进行编译,然后即可以升级codecanfly的版本号,添加修改记录,并执行 ccf publish
发布新版本。同样,修改编译器源码也可以执行这样的步骤发布。
问题反馈
当遇到编译器的问题时,你首先要查看该文档的FAQ
,这里会记录很多常见的问题。如果没有记录则可以通过钉钉的《引擎工具组》使用对接群
进行反馈获得最快的解决方案。
目前已知问题
- 暂不支持错误检查
- 暂不支持自动处理文件相互引用
- 暂不支持 ?? 运算符
- 暂不支持 in 运算符
- stirng 不支持utf-16,当前字符串的api以lua的string接口为基础,因此汉字的字符串长度获取可能异常,暂时可通过lua5.3的utf8库进行解决。
FAQ
- 在ts中我们往往会接收一个callback函数,并保存下来,作为逻辑处理的返回值,但是当回掉时会默认使用:进行会掉,导致第一个参数变成了self,遇到这种情况如何处理?
我们只需要在函数的申明出添加 @noSelf 即可,这样调用时就不会传递self了。