Я не буду много говорить о том, что такое TypeScript. На мой взгляд, это устоявшаяся и хорошо зарекомендовавшая себя технология, предоставляющая возможности программирования, которых раньше не хватало в JavaScript. На мой взгляд, самые основные особенности языка — это более четкое ООП и строгая типизация.
И за эти качества я полюбил этот язык и он гармонично вписался в мои проекты.
Все началось с того, что я вызывал компилятор из командной строки после каждого изменения проекта и пересобирал проект. Это было ужасно неудобно и сильно тормозило разработку.
Для grunt существовало расширение под названием grunt-ts, которое решало мои проблемы, и я использовал его некоторое время.
У компилятора TypeScript есть одна особенность (не ошибка и не особенность, политкорректность), которая не была учтена во всех расширениях, которые я пробовал.
Это меня ужасно раздражало и заставило написать собственный код. хрюканье-tsc — расширение для grunt, позволяющее создавать проекты на TypeScript, о чем я и хочу рассказать.
Особенность компилятора заключается в том, что при компиляции одного файла с зависимостями в выходной файл включается код самого компилируемого файла, а также всех файлов, указанных в зависимостях.
Это меня очень удивило, потому что обычным случаем для grunt является компиляция файлов один к одному.
И получается, что при компиляции проекта, когда нужно иметь большую гору файлов *.
js (скомпилированные аналоги *.
ts, с общими зависимостями), в выходных файлах получается очень много мусора (много дублированный код, который по сути не нужен).
На момент, когда я начал писать свое решение, мне не удалось найти готовый код, исправляющий такую особенность компилятора; возможно, сейчас это не тот случай.
Я заметил хак (возможно он где-то задокументирован, я не смог его найти) у наблюдателей идей, он оказался очень простым - запускайте компилятор в каталоге, в котором находится файл *.
ts и при указании файла, не используйте путь, а только имя файла, а также не работайте с опцией «--out».
Из примера сразу все станет понятно:
Такое использование приводит к тому, что файл Deferred.js содержит все зависимости, которые, собственно, я хотел скомпилировать отдельно и содержать в других файлах.tsc --out .
/utils/deferred/Deferred.js .
/utils/deferred/Deferred.ts
cd .
/utils/deferred && tsc Deferred.ts
Но, например, такое использование устраняет эту проблему и выходной файл Deferred.js содержит только скомпилированный код Deferred.ts, при этом проверка зависимостей сохраняется.
Это оказалось то, что мне нужно, и я написал свое решение.
Решение не имеет выдающихся возможностей, оно просто корректно решает задачу компиляции.
Также в модуль grunt добавлена возможность выбора версии компилятора, устранена зависимость от глобальной установки tsc и добавлен более гибкий способ указания *.
d.ts зависимостей.
Устранение глобальных зависимостей и выбор версии компилятора
Само расширение по умолчанию не зависит от глобальной установки tsc. Компилятор находится внутри модуля и кроме установки модуля больше ничего не требуется.В модуле есть опция параметры.
версия с помощью которого вы можете указать версию компилятора.
Вы можете установить следующие значения (на момент написания): «1.0», «1.1», «1.3», «1.4», «по умолчанию»(1.3), «последний»(1.4).
Я нашел поддержку разных версий очень полезной и ее реализовали, например, если старые проекты имеют зависимости от старых версий компилятора.
Кроме того, компилятор можно указать явно, указав путь к нему с помощью опции options.compiler .
При таком использовании опция параметры.
версия будет проигнорирован.
Например, если вы по-прежнему хотите использовать установленный в системе компилятор, тогда этот параметр должен иметь значение «/usr/local/lib/node_modules/typescript/bin/tsc.js».
Да, здесь есть очень важный момент: опция должна указывать на файл *.
js.
Указание зависимостей
Есть 3 варианта зависимостей:- параметры.
ссылки
— эта опция указывается в виде строки или массива строк и представляет собой маску (расширение glob) для поиска файлов объявлений *.d.ts.
- options.libray — это логический параметр, указывающий, что файл lib.d.ts текущего компилятора должен быть включен, даже если он указан с помощью параметра options.compiler .
- options.system - этот вариант очень похож на вариант параметры.
ссылки
, за исключением того, что поиск зависимостей осуществляется в папке текущего компилятора (для последних версий очень много *.d.ts), даже если это указано через опцию options.compiler .
Общее количество опций конфигурации очень велико, но это не должно пугать, все это необязательно и компиляция начинается со значений по умолчанию.
Мне кажется, расширение правильно выполняет свою задачу и дополнять его новыми возможностями нет необходимости.
Единственное, что хочу добавить — это инструкции по предварительной обработке, но они могут повлиять на исходные карты, поэтому думаю, как это сделать более аккуратно.
TypeScript также находится в стадии разработки, и я буду поддерживать новые версии компилятора.
Буду очень рад, если расширение кому-нибудь пригодится, а также буду рад обратной связи.
Официальный сайт TypeScript расширение глобуса расширение grunt-tsc Теги: #JavaScript #node.js #npm #grunt #JavaScript #node.js
-
Как Стать Миллионером Доткомов (Часть 1))
19 Oct, 24 -
Хаскелл
19 Oct, 24 -
Интернет-Сайты И Обесцвечивание
19 Oct, 24 -
Форекс – Это Не Гербалайф?
19 Oct, 24