18

假设我有两个文件

文件.ts

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

ZFile.ts

class Z
{
    Foo() { }
}

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

4

4 回答 4

15

在构建后事件中,我添加了对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>

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


编译器不会缩小,您必须使用捆绑包并在 Release 或 set 上编译

BundleTable.EnableOptimizations = true;

您还可以使用 Web Essentials 缩小或抓取内容并在其他地方缩小。

于 2013-06-30T00:47:15.570 回答
10

现在 VS Typescript Extension 支持合并到一个文件。
确保你已经安装了扩展Tools -> Extensions and Updates(VS2015默认有)

在此处输入图像描述

转到项目属性并检查Combine JavaScript output into file在此处输入图像描述

重要的是/// <reference />(如问题),它有助于tsc 在合并之前按依赖项对文件进行排序。


然后可以像往常一样使用最小化捆绑包:

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

并且在视野中

@Scripts.Render("~/bundles/finale")
于 2015-11-07T11:35:38.353 回答
4

使用 --out 参数。

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

typescript 编译器会自动为你做依赖导航。

于 2013-06-29T23:04:52.270 回答
2

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

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

string[] FolderOrder =
{
    @"libs\utils\",
    @"libs\controls\",
    @"app\models",
    @"app\viewmodels",
    @".",
};
于 2013-06-30T16:33:11.247 回答