2013-06-29 7 views
17

Przyjmijmy, mam dwa plikiPowiązanie i minimalizacja TypeScript?

AFile.ts

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

ZFile.ts

class Z 
{ 
    Foo() { } 
} 

Czy istnieje sposób, aby wygenerować wszystkie skrypty w jednym pliku w kolejności js to wymaga (potrzebujesz ZFile przed AFile, aby uzyskać definicję Z)?

Odpowiedz

10

Teraz VS Typescript rozszerzenie działa z łączących się do jednego pliku.
Upewnij się, że masz zainstalowane rozszerzenie Tools -> Extensions and Updates (VS2015 ma to domyślnie)

enter image description here

przejdź do właściwości projektu i sprawdzić Combine JavaScript output into file: enter image description here

ważne, aby mieć /// <reference /> (jak w pytaniu), pomaga tsc porządkować pliki według zależności przed scaleniem.


Wtedy dla minimalizacji wiązki może być używany jako zwykły:

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

iw świetle

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

Czy to też działa z innymi typami modułów, takimi jak System? Czy możliwe jest użycie tego zamiast modułów ładujących takich jak webpack lub babel, czyli. pakiety węzłów? –

+0

Ten interfejs użytkownika jest wyłączony na moim komputerze. Każdy pomysł, dlaczego? – user2173353

+0

Ponadto, buduje pliki JS z plików TS podczas kompilacji. Czy nie ma sposobu, aby zrobić to w locie z konfiguracją pakietu? : ^) – user2173353

4

Użyj parametru --out.

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

Kompilator maszynopis automatycznie wykona dla ciebie nawigację zależności.

16

W Zdarzenia kompilacji dodałem wywołanie TypeScript kompilatora

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

W konfiguracji wiązki dodałem

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

na plik _Layout.cshtml dodałem

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

iz że mam

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

Który jest cały mój skrypt w jednym pliku.


Kompilator nie minify, trzeba użyć wiązek i skompilować na wydaniu lub ustawić

BundleTable.EnableOptimizations = true; 

Można również minify korzystania Essentials Web lub zgrywania zawartości i minifing gdzieś indziej.

+0

Jak zatrzymać jej na kompilacji automatycznie zapisać? Czy musisz podać każdy plik lub czy możemy używać symboli wieloznacznych? – formatc

+0

Możesz użyć 'IncludeDirectory()' do włączenia wszystkich plików :-) Zobacz też: http://stackoverflow.com/questions/12926830/typescript-compiling-as-a-single-js-file –

+0

Czy to źle w pakiecie, aby mieć .Include ("~/Content/Scripts/all.ts")); ? – Revious

2

Zakładając, że wszystkie pliki ts są bezpośrednio lub pośrednio pod folderem o nazwie "ts", można napisać skrypt tt, który połączył wszystkie pliki .js (ale nie min.js) do pliku myApp.js i wszystkich plików min.js do pliku myApp.min.js.

Aby uzyskać kolejność plików można przetwarzać podfoldery tak:

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

Co to jest skrypt tt? –