TypeScript捆绑和缩小?

时间:2013-06-29 22:01:46

标签: asp.net-mvc typescript asp.net-mvc-5

假设我有两个文件

AFile.ts

/// <reference path="ZFile.ts" />
new Z().Foo();

ZFile.ts

class Z
{
    Foo() { }
}

有没有办法按照所需的顺序在单个js文件中生成所有脚本(ZFile之前需要AFile才能获得Z的定义?

4 个答案:

答案 0 :(得分:16)

在构建后事件中,我添加了对TypeScript编译器

的调用
tsc "..\Content\Scripts\Start.ts" --out "..\Content\Scripts\all.js"

在捆绑配置中,我添加了

bundles.Add(new ScriptBundle("~/scripts/all").Include("~/Content/Scripts/all.js"));

在我添加的_Layout.cshtml文件中

@Scripts.Render("~/Scripts/all")

然后我得到了

<script src="/Scripts/all?v=vsTcwLvB3b7F7Kv9GO8..."></script>

我的所有脚本都在一个文件中。


编译器不会缩小,您必须使用bundle并在Release或set

上编译
BundleTable.EnableOptimizations = true;

您还可以使用Web Essentials进行缩小,或者抓取内容并在其他位置进行缩小。

答案 1 :(得分:10)

现在VS Typescript Extension支持合并到一个文件 确保您已安装扩展程序Tools -> Extensions and Updates(默认情况下,VS2015已安装)

enter image description here

转到项目属性并检查Combine JavaScript output into fileenter image description here

拥有/// <reference />(如问题所述)很重要,它有助于tsc在合并之前按依赖项排序文件。

<小时/> 然后,最小化束可以照常使用:

bundles.Add(new ScriptBundle("~/bundles/finale").Include("~/js/all.js"));

并在视野中

@Scripts.Render("~/bundles/finale")

答案 2 :(得分:4)

使用--out参数。

tsc AFile.ts ZFile.ts --out single.js

typescript编译器将自动为您执行依赖关系导航。

答案 3 :(得分:2)

假设所有ts文件都直接或间接位于名为'ts'的文件夹下,您可以编写一个tt脚本,将所有.js文件(但不是min.js)合并到文件myApp.js和所有文件中你的min.js文件到myApp.min.js。

要获取文件的顺序,您可以处理子文件夹:

string[] FolderOrder =
{
    @"libs\utils\",
    @"libs\controls\",
    @"app\models",
    @"app\viewmodels",
    @".",
};