2013-06-29 37 views
17

Angenommen, ich habe zwei DateienTypScript-Bündelung und Minification?

AFile.ts

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

ZFile.ts

class Z 
{ 
    Foo() { } 
} 

Gibt es eine Möglichkeit, alle Skripte in einer einzigen js Datei in der Reihenfolge zu erzeugen, es erfordert (benötigt ZFile vor AFile, um die Definition von Z) zu erhalten?

Antwort

10

Jetzt VS Typoskript Erweiterung unterstützt in einer Datei zusammenführen.
Vergewissern Sie sich, dass Sie die Erweiterung installiert haben Tools -> Extensions and Updates (VS2015 es hat in der Standardeinstellung)

enter image description here

Gehen Sie zu den Projekteigenschaften und überprüfen Combine JavaScript output into file: enter image description here

Wichtige /// <reference /> (wie in Frage zu haben,), hilft es tsc Dateien vor der Zusammenführung nach Abhängigkeiten zu ordnen.


Dann zur Minimierung Bündel kann wie gewohnt verwendet werden:

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

und im Hinblick

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

Funktioniert das auch mit anderen Modultypen wie System? Ist es möglich, dies anstelle von Modulladern wie Webpack oder Babel zu verwenden, dh. Knotenpakete? –

+0

Diese Benutzeroberfläche ist auf meinem Computer deaktiviert. Irgendeine Idee warum? – user2173353

+0

Auch dies erstellt JS-Dateien Formular TS-Dateien während Build. Gibt es nicht eine Möglichkeit, dies mit einer Bündelkonfiguration im Handumdrehen zu tun? : ^) – user2173353

4

Verwenden Sie den Parameter --out.

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

Der Typescript-Compiler führt automatisch die Abhängigkeitsnavigation für Sie durch.

16

In der Postbuild Ereignisse habe ich einen Aufruf an TypeScript Compiler

tsc "..\Content\Scripts\Start.ts" --out "..\Content\Scripts\all.js" 

Im Bündelkonfiguration I

bundles.Add(new ScriptBundle("~/scripts/all").Include("~/Content/Scripts/all.js")); 

Auf der _Layout.cshtml Datei hinzugefügt I

@Scripts.Render("~/Scripts/all") 

gegeben und mit dass ich

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

Das ist alles mein Skript in einer einzigen Datei.


Der Compiler nicht funktioniert minify, müssen Sie Bundles verwenden und auf Freigabe kompilieren oder

BundleTable.EnableOptimizations = true; 

Sie können auch sonst minify mit Web Essentials-oder greifen den Inhalt und minifing irgendwo gesetzt.

+0

Wie stoppen Sie es von automaticly Kompilieren auf retten? Müssen Sie jede Datei angeben oder können wir Platzhalter verwenden? – formatc

+0

Sie können 'IncludeDirectory()' verwenden, um alle Dateien einzuschließen :-) Siehe auch: http://stackoverflow.com/questions/12926830/typescript-compiling-as-a-single-js-file –

+0

Ist es falsch im Bündel zu haben .Include ("~/Content/Scripts/all.ts")); ? – Revious

2

Angenommen, alle Ihre ts-Dateien befinden sich direkt oder indirekt in einem Ordner namens say 'ts' könnten Sie ein tt-Skript schreiben, das alle .js-Dateien (aber nicht min.js) in eine Datei myApp.js und alle zusammenführt Ihrer min.js-Dateien in myApp.min.js.

Um die Reihenfolge der Dateien erhalten Sie somit Unterordner verarbeiten konnte:

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

Was ist ein TT-Skript? –

Verwandte Themen