TypeScript捆绑和缩小?

Bru*_*oLM 18 asp.net-mvc typescript asp.net-mvc-5

假设我有两个文件

AFile.ts

/// <reference path="ZFile.ts" />
new Z().Foo();
Run Code Online (Sandbox Code Playgroud)

ZFile.ts

class Z
{
    Foo() { }
}
Run Code Online (Sandbox Code Playgroud)

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

Bru*_*oLM 15

在post build事件中,我添加了对TypeScript编译器的调用

tsc "..\Content\Scripts\Start.ts" --out "..\Content\Scripts\all.js"
Run Code Online (Sandbox Code Playgroud)

在我添加的捆绑配置中

bundles.Add(new ScriptBundle("~/scripts/all").Include("~/Content/Scripts/all.js"));
Run Code Online (Sandbox Code Playgroud)

_Layout.cshtml我添加的文件上

@Scripts.Render("~/Scripts/all")
Run Code Online (Sandbox Code Playgroud)

我得到了

<script src="/Scripts/all?v=vsTcwLvB3b7F7Kv9GO8..."></script>
Run Code Online (Sandbox Code Playgroud)

这是我在单个文件中的所有脚本.


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

BundleTable.EnableOptimizations = true;
Run Code Online (Sandbox Code Playgroud)

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


Art*_*tru 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"));
Run Code Online (Sandbox Code Playgroud)

在视野中

@Scripts.Render("~/bundles/finale")
Run Code Online (Sandbox Code Playgroud)