将所有TypeScript文件编译成单个TypeScript文件

3

我正在创建一个TypeScript库,可以将所有生成的JS文件轻松编译成单个文件。有没有办法将所有.ts和.d.ts编译成单个.ts文件?

支持纯TypeScript实现的库将会很好(为那些希望获得良好的智能提示并能够调试核心TS文件的人),此外还需要支持JS版本(较低的智能提示,只能调试生成的文件)。

一种解决方案是创建一个PowerShell脚本来连接所有文件,但是我没有看到一种好的动态方式(由于依赖项)来完成这个操作,而不是硬编码所有文件名的正确顺序。


你可以将依赖项保存在一个不同的文件中,然后由你的“构建”脚本使用,而不是硬编码在代码中。我使用一个json文件来保存依赖项,这使得它非常容易与我所拥有的Python构建脚本一起使用。 - Nitzan Tomer
3个回答

2
你可以将文件编译成 .d.ts 和 .js 格式。
如果你有多个 TypeScript 文件,请运行:
tsc --out mylib.js --declaration first.ts second.ts 

你将会得到 (mylib.js + mylib.d.ts) 这两个文件,然后可以在 TypeScript 或 JavaScript 中使用它们。
你可以在这里查看一个示例:https://github.com/basarat/ts-test/tree/master/tests/compileToSingle

我实际上正在寻找一种方法来创建一个单独的foo.ts文件,以便用户可以调试TypeScript源代码,而无需查看JavaScript实现。拥有定义文件肯定很有用,但不能让用户在查看TypeScript时调试项目(至少不是这样)。 - N. Taylor Mullen
@N.TaylorMullen 我也在寻找一种方法来做到这一点。可以参考 https://github.com/basarat/typescript-collections 这个库,但是将所有内容放在一个文件中看起来很丑陋:https://github.com/basarat/typescript-collections/blob/gh-pages/collections.ts ,不过目前似乎只有这个选项。 - basarat

0


你需要使用编译器的命令行参数。 --out FILE 将输出连接并发射到单个文件中。

示例

 tsc --out modules.js main.ts app.ts

上面的答案来自于这个链接: TypeScript编译成单个JS文件

我已经实现了这个功能,我正在尝试将所有的.ts文件编译成一个单独的.ts文件,而不是.js文件。 - N. Taylor Mullen
这不会合并模块,所以没有那么有用。如果尝试使用outFile选项编译模块,则会抛出以下错误:'error TS6131: 无法使用选项'outFile'编译模块,除非'--module'标志为'amd'或'system'。' 添加这些标志只会创建多个文件,与 basarat 的解决方案(在命令行中为每个文件命名)不同。 - Ivan Castellanos

0

我认为目前没有专门用于TypeScript的工具可以将所有文件混合在一起,但是如果您有一个构建脚本,只需编写一小段代码即可在项目或所需范围内定位所有*.ts文件,然后只需创建一个新文件并将这些现有文件附加到其中。然后,您将拥有一个名为my-project.ts的大文件,您可以通过tsc.exe运行它,并使用--declaration标志(或类似名称)输出my-project.d.ts

如果您希望将其用作其他人使用的分布式库,则必须以某种方式打包它,无论是一个大型.ts文件还是其他机制...我曾经问过类似的问题:

Can you create Typescript packages? like c# dlls


依赖关系怎么办?也就是说,假设 A.ts 依赖于 B.ts,B.ts 排在合并文件的顶部后面跟着 A.ts 是不是很重要? - N. Taylor Mullen
2
尝试了一下,可惜当所有文件被串联成一个单独的文件时,顺序确实很重要。 - N. Taylor Mullen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接