目前是否有任何关于打包打字稿文件的概念?
在尝试将纯javascript项目迁移到typescript时,我发现痛苦的一件事是引用,在某些情况下,我有复杂的对象,我不得不写几个引用来自各处的文件的引用语句
部分原因在于我的项目布局,因为它是一个非常大的模块化设计,所以我有一个这样的系统:
- modules
|- module1
|- models
|- services
|- controllers
|- module2
|- models
|- services
|- controllers
|- core
|- models
|- services
|- data
|- validation
还有更多,但你明白了,现在每个模块都使用了核心,但是使用javascript我只是希望它在运行时加载,这仍然需要发生,但是因为打字稿关注的是只是在编译时我真的想知道是否有一些概念将所有打字稿文件打包到某些打字稿库或其他东西,然后可以从项目中引用而不是让module1模型引用核心模型等。
问题当前围绕目录结构,因为命名空间工作正常但如果我移动文件,我需要转到引用该移动文件并更新它的每个文件。这是令人厌倦的,而如果有某种包装的想法,那么我可以只引用它的输出,所以我不再担心文件系统和目录,我只是担心包和命名空间。
我认为很多这与C#的工作方式非常相似,你有一个有引用的项目。然后,该项目中的每个文件都可以使用引用中的任何类,因此代码公开由引用和名称空间管理。
我正在考虑让我的构建脚本只创建一个本地references.ts文件,然后遍历relavant模块中的每个* .ts文件并将它们放入一个大文件中:
///<reference path="core/models/some-model.ts"/>
///<reference path="core/models/some-model-2.ts"/>
///<reference path="core/services/some-service.ts"/>
如上所示,然后在所有需要核心文件的打字稿文件中使用此参考文件,因此这可以作为一种项目级引用,这可能意味着某些文件有他们不需要的引用,但是它的编译时间所以我不这样做非常关心......
如果一个好方法已经存在,我不想亲自动手解决这个问题,希望有意义......
==编辑==
我只是想在这里发布,因为我的场景节省了我很多时间,并且还减少了我的参考guff 99%,这不适用于那些没有构建脚本的人。
现在假设你有一个构建脚本我采取了在我的脚本中执行一个步骤的路径,该步骤遍历根级目录中的每个文件(在本例中为module1,module2等),然后它将输出一个本地.references.ts到该目录中的引用文件夹中。然后我手动编写了一个external.references.ts,它引用外部描述符或其他需要的模块引用。
当我编写我的打字稿时,这部分完成之后,我基本上再将它指向根目录并告诉它将它们全部编译(* / .ts)到一个大的js文件中(即module1.js)。现在因为这将自动包含本地和外部引用,我不需要在各个clases中放置任何引用声明。
因此,提供本地和外部参考文件(local.reference.ts,external.reference.ts)的方式包含在文件的批量处理中,您只需要担心名称空间,这使得它几乎与C#将如何运作。
但是,如果你没有能够进行本地引用生成和打字稿编译的构建脚本,那么给出的注释链接将是一个不错的选择。
答案 0 :(得分:1)
目前,正如您所描述的那样,没有将源打字稿文件打包为预建库的正式流程。
目前使用的一些不同的解决方案非常类似于评论中链接的解决方案,这些解决方案允许您将所有引用放入中央打字稿文件,然后从您的个别脚本中引用它们,或者您提出的方法相同的方法,但不是手动编写它,而是让你的构建脚本为你生成引用,并让编译过程注入引用,而不是在每个文件中显式引用它们。
随着Typescript变得越来越成熟,可能有更多正式的方法可以做到这一点,但目前只需采用哪种解决方案最适合您的工具和appraoch来开发使用Typescript。