18

2 つのファイルがあるとします。

AFile.ts

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

ZFile.ts

class Z
{
    Foo() { }
}

すべてのスクリプトを必要な順序で単一のファイルに生成する方法はありますか (の定義を取得する前にjs必要です)。ZFileAFileZ

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>

これは、すべてのスクリプトを 1 つのファイルにまとめたものです。


コンパイラは縮小しません。バンドルを使用し、リリースまたはセットでコンパイルする必要があります

BundleTable.EnableOptimizations = true;

Web Essentials を使用するか、コンテンツを取得して別の場所でミニファイすることもできます。

于 2013-06-30T00:47:15.570 に答える
10

VS Typescript 拡張機能は、1 つのファイルへのマージをサポートするようになりました。
拡張機能がインストールされていることを確認してください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 に答える
2

すべての ts ファイルが直接的または間接的に「ts」というフォルダーの下にあると仮定すると、すべての .js ファイル (ただし min.js ではない) をファイル myApp.js とすべての min にマージする tt スクリプトを作成できます。 js ファイルを myApp.min.js に追加します。

ファイルの順序を取得するには、次のようにサブフォルダーを処理できます。

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