TypeScript комплектация и минимизация?
Предположим, у меня есть два файла
AFile.ts
/// <reference path="ZFile.ts" />
new Z().Foo();
ZFile.ts
class Z
{
Foo() { }
}
Есть ли способ генерировать все сценарии в одном файле js
в том порядке, в котором он нужен (нужно ZFile
до AFile
, чтобы получить определение Z
)?
Ответы
Ответ 1
Теперь VS Typescript Расширение поддерживает слияние с одним файлом.
Убедитесь, что вы установили расширение 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")
Ответ 2
В событиях после сборки я добавил вызов 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>
Это все мой script в одном файле.
Компилятор не минимизирует, вам нужно использовать пакеты и компилировать в Release или установить
BundleTable.EnableOptimizations = true;
Вы также можете минимизировать использование веб-Essentials или захватить содержимое и minifing в другом месте.
Ответ 3
Используйте параметр -out.
tsc AFile.ts ZFile.ts --out single.js
Компилятор typescript автоматически выполнит навигацию по зависимостям.
Ответ 4
Предполагая, что все ваши ts файлы прямо или косвенно находятся под папкой say 'ts', вы можете написать tt script, который объединил все .js файлы (но не min.js) в файл myApp.js и все ваши файлы min.js в myApp.min.js.
Чтобы получить упорядочение файлов, вы можете обрабатывать подпапки таким образом:
string[] FolderOrder =
{
@"libs\utils\",
@"libs\controls\",
@"app\models",
@"app\viewmodels",
@".",
};