4

目前是否有任何打包打字稿文件的概念?

在尝试将纯 javascript 项目迁移到 typescript 时,我发现一件痛苦的事情是引用,在某些情况下,我有复杂的对象,我不得不编写几个引用语句从各地提取文件。

这部分取决于我的项目布局,因为它是一个非常大且模块化的布局,所以我有一个这样的系统:

- modules
  |- module1
     |- models
     |- services
     |- controllers
  |- module2
     |- models
     |- services
     |- controllers
  |- core
     |- models
     |- services
        |- data
        |- validation

还有更多,但你明白了,现在每个模块都使用核心,但是使用 javascript 我只希望它在运行时加载,这仍然需要发生,但是因为打字稿问题只是在编译时间我想知道是否有将所有打字稿文件打包到某个打字稿库或其他东西的概念,然后可以从项目中引用,而不是让 module1 模型引用核心模型等。

问题目前围绕目录结构展开,因为命名空间工作正常,但如果我移动一个文件,我需要转到引用该移动文件的每个文件并更新它。这很烦人,而如果有某种包的想法,那么我可以在它的输出时引用它,所以我不再担心文件系统和目录,我只担心包和命名空间。

我认为这与 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"/>

如上所示,然后在所有需要核心文件的打字稿文件中使用这个参考文件,所以这作为一种项目级别的参考,这可能意味着一些文件有他们不需要的参考,但它的编译时间所以我真的不在乎。 ..

如果已经存在好的方法,我不想手动解决这个问题,希望这是有道理的......

== 编辑 ==

我只是想把这个贴在这里,因为我的场景节省了我大量的时间,也减少了我的参考资料 99%,但这不适用于没有构建脚本的人。

现在假设您确实有一个构建脚本,我采取了在我的脚本中执行一个步骤的路径,该步骤遍历根级目录中的每个文件(在本例中为模块 1、模块 2 等),然后它会输出一个 local.references。 ts 到该目录中的引用文件夹中。然后我手动编写了一个 external.references.ts,它在需要的地方引用外部描述符或其他模块引用。

这部分完成后,当我编译我的打字稿时,我基本上将它再次指向根目录并告诉它将它们全部编译(* / .ts)成一个大的 js 文件(即 module1.js)。现在因为这将自动包含本地和外部引用,所以我不需要在各个类中放置任何引用声明。

因此,通过这种方式提供本地和外部参考文件(local.reference.ts、external.reference.ts)包含在文件的批量处理中,您只需担心命名空间,使其与 C# 的方式几乎相同操作。

但是,如果您没有能够进行本地参考生成和打字稿编译的构建脚本,那么给出的评论链接将是一个不错的选择。

4

1 回答 1

1

目前没有正式的流程可以将您的源打字稿文件打包为您所描述的预构建库。

目前使用了几种不同的解决方案,就像评论中链接的那样,它允许您将所有引用放入中央打字稿文件中,然后只需从您的各个脚本中引用它们,或者您提出的方法进行相同排序的方法,而不是手动编写它,而是让您的构建脚本为您生成引用并让编译过程将引用注入而不是在每个文件中显式引用它们。

随着 Typescript 变得越来越成熟,可能会有更正式的方法来执行此操作,但目前只要考虑到您的工具和使用 Typescript 开发的方法,选择最有效的解决方案即可。

于 2013-03-28T10:13:17.403 回答