2013-03-27 21 views
4

当前是否有任何一种打包打印脚本文件的概念?你可以创建Typescript包吗?像c#dlls

当我尝试将纯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%,这不会是适用于人谁尽管没有构建脚本。

现在假设你有一个构建脚本,我采取了在我的脚本中经过一个根级目录(module1,module2等)中的每个单独文件的步骤,然后它会输出一个local.references.ts放入该目录内的参考文件夹中。然后我手动编写了一个external.references.ts,它在需要时引用外部描述符或其他模块引用。

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

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

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

+1

我强烈建议这里概述的方法:http://stackoverflow.com/a/15336006/1704166。您可以为每个目录或每个逻辑组目录设置一个“references.ts”。 – 2013-03-27 16:41:18

+0

啊,是的,这与我现在采取的方法非常相似,尽管构建脚本生成了我的''local.reference.ts''文件,该文件是该项目中所有文件的大参考列表。 – Grofit 2013-03-27 16:48:47

+0

在发现多个文件的编译过程后,将为每个文件考虑所有引用,而不仅仅是单个文件,如果正确完成,我添加了一个可以删除每个文件的所有单独引用的编辑。并且还会使您的构建更加精简,因为您不依赖于IDE或NodeJS等。 – Grofit 2013-03-28 09:58:42

回答

1

当前,没有正式的过程将打印源打印文件打包为预建库,如您所描述的。

目前有几种不同的解决方案,就像在注释中链接的解决方案一样,它允许您将所有引用放入中央打字稿文件,然后仅从您的个别脚本中引用它们,或者您提出的方法做同样的方法,而不是手动编写它,你得到你的构建脚本来为你生成引用,并让编译过程注入引用而不是在每个文件中明确引用它们。

随着Typescript越来越成熟,可能会有更正式的方法来做到这一点,但现在只要考虑到使用Typescript开发工具和Appraoch就可以取得最好的解决方案。

相关问题