目前有没有任何对typescript文件进行打包的概念?
当前,我在尝试将一个纯JavaScript项目迁移到TypeScript时,遇到了一些烦恼,其中之一是引用。在某些情况下,当我有复杂的对象时,我不得不编写多个引用语句,从各处获取文件。
部分原因是我的项目布局,因为它是一个相当大且模块化的项目,所以我有这样的系统:
- modules
|- module1
|- models
|- services
|- controllers
|- module2
|- models
|- services
|- controllers
|- core
|- models
|- services
|- data
|- validation
还有很多内容,但你已经明白了,现在每个模块都使用核心模块,不过用 JavaScript 的话我只希望它在运行时被加载,这仍然需要发生。然而,由于 TypeScript 的关注点实际上只在编译时,所以我想知道是否有将所有 TypeScript 文件打包成某种 TypeScript 库的概念,然后可以从项目中引用它,而不是让模块1模型引用核心模型等。
目前的问题围绕着目录结构,因为命名空间工作得很好,但如果我移动一个文件,我需要去更新引用该移动文件的每个文件。这很繁琐,而如果有某种包的想法,那么一旦输出了这个包,我就可以只引用它,这样我就不再担心文件系统和目录,只关心一个包和命名空间。
我认为很多这些都与 C# 的工作方式非常相似,你有一个项目,它有引用。然后该项目中的每个文件都可以使用引用中的任何类,因此代码展示由引用和命名空间管理。
我考虑让我的构建脚本只制作一个本地 references.ts 文件,然后循环遍历相关模块中的每个 *.ts 文件,并将它们放入一个大文件中:
///<reference path="core/models/some-model.ts"/>
///<reference path="core/models/some-model-2.ts"/>
///<reference path="core/services/some-service.ts"/>
像上面展示的那样,然后在所有需要核心文件的typescript文件中使用这个参考文件,因此它作为一种项目级别的参考,这可能意味着一些文件具有它们不需要的引用,但它是编译时所以我并不真正关心...
如果已经存在一个好的方法来解决这个问题,我就不想手动解决了。希望这样说起来有意义...
==编辑==
我只是想把这个放在这里,因为对于我的场景来说,它节省了我大量的时间,并且将我的引用缩减了99%,但这对于没有构建脚本的人可能不适用。
现在假设您有一个构建脚本,我采取了一个步骤,在我的脚本中,每一个根级目录中的文件(在这种情况下是module1、module2等)都会输出一个local.references.ts到该目录下的references文件夹中。然后我手动编写了一个external.references.ts,它引用了外部描述符或其他模块的引用,无论何时需要。
完成这个部分后,当我编译我的typescript时,我基本上再次指向根目录,并告诉它将它们全部编译成一个大的js文件(即module1.js)。现在,因为它会自动包含本地和外部引用,所以我不需要在单独的类中放置任何引用声明。
因此,只要本地和外部参考文件(local.reference.ts、external.reference.ts)被包含在文件的批量处理中,您就只需要担心命名空间,这使它几乎与C#的操作方式相同。
但是,如果您没有能够生成本地参考并编译typescript的构建脚本,那么给出的评论链接可能是一个不错的选择。