假设我有两个文件
文件.ts
/// <reference path="ZFile.ts" />
new Z().Foo();
ZFile.ts
class Z
{
Foo() { }
}
有没有办法按照它需要的顺序在单个js
文件中生成所有脚本(需要ZFile
在AFile
获得定义之前Z
)?
假设我有两个文件
文件.ts
/// <reference path="ZFile.ts" />
new Z().Foo();
ZFile.ts
class Z
{
Foo() { }
}
有没有办法按照它需要的顺序在单个js
文件中生成所有脚本(需要ZFile
在AFile
获得定义之前Z
)?
在构建后事件中,我添加了对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 缩小或抓取内容并在其他地方缩小。
现在 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")
使用 --out 参数。
tsc AFile.ts ZFile.ts --out single.js
typescript 编译器会自动为你做依赖导航。
假设您的所有 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",
@".",
};