Еще Один Способ Создания Проектов Typescript.

Я не буду много говорить о том, что такое TypeScript. На мой взгляд, это устоявшаяся и хорошо зарекомендовавшая себя технология, предоставляющая возможности программирования, которых раньше не хватало в JavaScript. На мой взгляд, самые основные особенности языка — это более четкое ООП и строгая типизация.

И за эти качества я полюбил этот язык и он гармонично вписался в мои проекты.

Все началось с того, что я вызывал компилятор из командной строки после каждого изменения проекта и пересобирал проект. Это было ужасно неудобно и сильно тормозило разработку.

Для grunt существовало расширение под названием grunt-ts, которое решало мои проблемы, и я использовал его некоторое время.

У компилятора TypeScript есть одна особенность (не ошибка и не особенность, политкорректность), которая не была учтена во всех расширениях, которые я пробовал.

Это меня ужасно раздражало и заставило написать собственный код. хрюканье-tsc — расширение для grunt, позволяющее создавать проекты на TypeScript, о чем я и хочу рассказать.

Особенность компилятора заключается в том, что при компиляции одного файла с зависимостями в выходной файл включается код самого компилируемого файла, а также всех файлов, указанных в зависимостях.

Это меня очень удивило, потому что обычным случаем для grunt является компиляция файлов один к одному.

И получается, что при компиляции проекта, когда нужно иметь большую гору файлов *.

js (скомпилированные аналоги *.

ts, с общими зависимостями), в выходных файлах получается очень много мусора (много дублированный код, который по сути не нужен).

На момент, когда я начал писать свое решение, мне не удалось найти готовый код, исправляющий такую особенность компилятора; возможно, сейчас это не тот случай.

Я заметил хак (возможно он где-то задокументирован, я не смог его найти) у наблюдателей идей, он оказался очень простым - запускайте компилятор в каталоге, в котором находится файл *.

ts и при указании файла, не используйте путь, а только имя файла, а также не работайте с опцией «--out».

Из примера сразу все станет понятно:

  
   

tsc --out .

/utils/deferred/Deferred.js .

/utils/deferred/Deferred.ts

Такое использование приводит к тому, что файл Deferred.js содержит все зависимости, которые, собственно, я хотел скомпилировать отдельно и содержать в других файлах.



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

Вместе с данным постом часто просматривают: