将一堆TypeScript代码, 打包成单个JavaScript库代码正确方式?

最近有个需求,希望用TypeScript写一些公共方法,然后要编译成为混淆过的JavaScript代码,给其他项目组使用。

折腾了将近一周,终于有了点儿头绪,有了可以运行的代码,但是,过程中遇到了一些问题,希望发出来咨询一下各位,想了解一下,正确的方式应该是怎样的。

  1. 将JS脚本设置为插件,是否只能在打包的时候,使用’umd’的方式进行打包?就是,需要在window对象上面挂一个全局的对象,然后供游戏逻辑访问。有没有其他的模块打包方式是支持的?
  2. 如果不将JS脚本设置为插件,是否可以在webpack中,设置libraryTarget: ‘commonjs2’,将JS脚本作为Cocos中,一个普通的组件来使用?——我实际测了一下,打包到小游戏上,会在webpack打包出来代码内部的require部分报错。
  3. 有什么好的工具,可以将分散的.d.ts声明文件,自动合并成为一个.d.ts的文件?
  4. 无论是gulp, webpack,有没有大神分享一下打包TS代码到JS库文件的模板工程?不胜感激!

  • Creator 版本: 2.4.2

  • 目标平台: 小游戏真机

1赞

看来大家都在做同样一件事,同求 类似的解决方案。。。

我在考虑git仓库作为公共类或游戏框架 + nodejs npm方式引入项目

生成单个d.ts的方式可以试下:dts-generator

2赞

打成npm包

嗯,我使用了dts-bundle-generator,这个,来生成单个的.d.ts文件

多学学现代前端工程化, 少看看creator

目前你的需求实现了吗?请大佬分享下具体实现步骤,不胜感激。。。

npm 包

补充最近看到的一个东西,
api extractor,可以将多个ts文件,声明合并成为一个文件,并且,只合并的是公共的接口,不会暴露不对外的接口。
文档:
https://api-extractor.com/pages/overview/demo_rollup/

直接编译就好了 这么简单的事 你看一下tsconfig.json

打破CocosCreator3d不能使用npm包的魔咒!!!
这个开源参考一下,路过可以star一下

  • 没有动态模块的话 直接webpack是可以打成一个js的, webpack默认用的是uglify-js混淆打包成单一js的。
  • 至于所有ts合成至一个ts 你用一个index.ts把所有的ts引用下,ts会自动编译的 ,然后入口设置为index.ts即可,具体可以参考一些成熟的npm模块

可以参考下我的开源项目 https://gitee.com/nomat/lcc-render 插件的打包方式