2013-06-29 2 views
17

Предположим, у меня есть два файлаКомплектация и миниатюра TypeScript?

AFile.ts

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

ZFile.ts

class Z 
{ 
    Foo() { } 
} 

Есть ли способ, чтобы создать все сценарии в одном файле js в порядке, он требует (нужно ZFile до AFile, чтобы получить определение Z)?

ответ

10

Теперь VS Машинопись Extension поддерживает объединение в один файл.
Убедитесь, что вы установили расширение Tools -> Extensions and Updates (VS2015 имеет его по умолчанию)

enter image description here

Перейти к свойствам проекта и проверить Combine JavaScript output into file: enter image description here

Важно иметь /// <reference /> (как и в вопросе), он помогает tsc файлам заказов зависимостями до слияния.


Тогда для минимизации пучка может быть использован как обычно:

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

и ввиду

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

Будет ли это работать и с другими типами модулей, такими как System? Можно ли использовать это вместо модульных загрузчиков, таких как webpack или babel, т.е. пакеты узлов? –

+0

Этот интерфейс отключен на моей машине. Любая идея почему? – user2173353

+0

Кроме того, эта сборка файлов JS формирует файлы TS во время сборки. Разве нет способа сделать это «на лету» с конфигурацией комплекта? : ^) – user2173353

4

Используйте параметр --out.

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

Составитель машинописного текста автоматически выполнит навигацию по зависимостям.

16

В пост сборки событий я добавил вызов 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> 

Это все мой сценарий в одном файле.


Компилятор не преуменьшать, вы должны использовать связки и компиляции на версии или установить

BundleTable.EnableOptimizations = true; 

Вы также можете Минимизировать с помощью Web Essentials, или захвата содержимого и minifing где-то в другом месте.

+0

Как остановить его от компиляции автоматически при сохранении? Должен ли я указывать каждый файл или мы можем использовать подстановочные знаки? – formatc

+0

Вы можете использовать 'IncludeDirectory()' для включения всех файлов :-) См. Также: http://stackoverflow.com/questions/12926830/typescript-compiling-as-a-single-js-file –

+0

Неправильно в пакете иметь .Include ("~/Content/Scripts/all.ts")); ? – Revious

2

Предполагая, что все ваши ts-файлы прямо или косвенно находятся под папкой say 'ts', вы можете написать скрипт tt, который объединил все .js-файлы (но не min.js) в файл myApp.js и все ваших файлов min.js в myApp.min.js.

Для получения упорядочивания файлов можно обрабатывать вложенные папки, таким образом:

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

Что такое скрипт tt? –

Смежные вопросы