Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 打印脚本捆绑和缩小?_Asp.net Mvc_Typescript_Asp.net Mvc 5 - Fatal编程技术网

Asp.net mvc 打印脚本捆绑和缩小?

Asp.net mvc 打印脚本捆绑和缩小?,asp.net-mvc,typescript,asp.net-mvc-5,Asp.net Mvc,Typescript,Asp.net Mvc 5,假设我有两个文件 AFile.ts /// <reference path="ZFile.ts" /> new Z().Foo(); 是否有一种方法可以按照所需的顺序在单个js文件中生成所有脚本(需要ZFile在AFile之前获得Z的定义)?使用--out参数 tsc AFile.ts ZFile.ts --out single.js typescript编译器将自动为您执行依赖项导航 在生成后事件中,我添加了对TypeScript编译器的调用 tsc "..\Content\S

假设我有两个文件

AFile.ts

/// <reference path="ZFile.ts" />
new Z().Foo();
是否有一种方法可以按照所需的顺序在单个
js
文件中生成所有脚本(需要
ZFile
AFile
之前获得
Z
的定义)?

使用--out参数

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

typescript编译器将自动为您执行依赖项导航

在生成后事件中,我添加了对
TypeScript
编译器的调用

tsc "..\Content\Scripts\Start.ts" --out "..\Content\Scripts\all.js"
在我添加的bundle配置中

bundles.Add(new ScriptBundle("~/scripts/all").Include("~/Content/Scripts/all.js"));
在我添加的
\u Layout.cshtml
文件上

@Scripts.Render("~/Scripts/all")
有了这些,我得到了

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

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

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

要获得文件的顺序,您可以通过以下方式处理子文件夹:

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

现在VS Typescript扩展支持合并到一个文件。
确保您已经安装了扩展
工具->扩展和更新
(默认情况下VS2015已安装)

转到项目属性并选中
将JavaScript输出合并到文件中

重要的是要有
//
(如问题中所述),它有助于
tsc
在合并之前按依赖项排序文件


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

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

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

如何阻止它在保存时自动编译?您必须指定每个文件还是可以使用通配符?您可以使用
IncludeDirectory()
来包含所有文件:-)另请参见:在捆绑包中使用.include(“~/Content/Scripts/all.ts”)?什么是tt脚本?这是否也适用于其他模块类型,如System?是否可以使用它来代替模块加载器,如webpack或babel,即节点包?此UI在我的机器上被禁用。知道为什么吗?另外,在构建过程中,这会从TS文件中构建JS文件。是否有一种方法可以通过bundle配置即时执行此操作?:^)
bundles.Add(new ScriptBundle("~/bundles/finale").Include("~/js/all.js"));
@Scripts.Render("~/bundles/finale")