项目很小,实现一个通用功能类库,尝试使用typescript编写。预期输出结果同时支持CJS, ESM, <script> reference三种方式的使用(使用umd模块输出),
原本是想用typescript官方的tsc作为编译工具,最终放弃。

在tsconfig.js中配置了
compilerOptions.module = "umd";

查看编译产物,发现编译产物中,没有全局变量的添加,这样对通过<script src="path/to/file.js">引用的方式来说,根本无法使用编译产物。

注:
全局变量的添加
形如 global.exportName = factory()

拿一个rollup编译的umd产物来看,如下图
image.png

对比一下tsc的umd产物
image.png

tsc的umd编译产物缺少了给全局命名空间挂载变量的操作。

上面这个问题在2016年就被提了issue
https://github.com/microsoft/...
现在是2022年6月,issue依然是open状态,这个问题无解。

至此,已经放弃了用tsc作为项目编译器的想法,拜拜了tsc。


DiracKeeko
125 声望2 粉丝