Как лучше всего подходит TypeScript с модулями ES6?

Я начинаю новый веб-проект и пробую TypeScript, в основном в качестве транспилятора ES6, но также с дополнительными преимуществами проверки типов, особенно для существующих библиотек, таких как jQuery, в сочетании с определениями типов DefinitherTyped.

Начиная с последней версии TypeScript поддерживает как свои собственные внутренние модули, так и модули ES6, которые вызывают «внешние» модули. Поскольку ES6 более стандартен, чем TypeScript, я намерен использовать ES6 / внешние модули, а не традиционные / внутренние модули TypeScript.

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

Проблема в том, что, насколько я могу судить, TypeScript может генерировать только один выходной файл при использовании собственного формата модуля. Если я попытаюсь использовать внешние модули ES6, он создаст отдельный файл .js для каждого файла .ts.

Это означает, что мне нужно будет объединить их с помощью browserify, но также мне нужна поддержка исходной карты, что означает, что я должен настроить browserify для входных и выходных исходных карт, а затем объединить его с exorcist, чтобы исходная карта была извлечена из пакета.

Это похоже на очень сложную настройку сборки. Нет ли более простого способа, возможно, напрямую поддерживаемого TypeScript? Какой подход лучше? Что вы порекомендуете?


person Luis Crespo    schedule 21.11.2015    source источник


Ответы (2)


Позвольте TypeScript делать то, что у него лучше всего ...

  • Добавьте типы в JavaScript, будь то ES5 / ES6 / ES7
  • Транспортировка на ES5
  • Разрешить модули с помощью указанного синтаксиса модуля (commonjs, amd, umd, system)

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

  • веб-пакет
  • просматривать
  • Цифы
person Brocco    schedule 21.11.2015
comment
Спасибо, вы в основном подтверждаете мои подозрения. Проблема, и это вызывает другой вопрос, заключается в том, что из моих тестов я увидел, что: а) Browserify имеет ограничения с исходными картами и минификацией, и б) Webpack слишком чертовски сложен для чего-то, что должно делать только одно. - person Luis Crespo; 21.11.2015
comment
Также есть модуль tsify, который работает с Browserify для TypeScript, возможно, это поможет. - person pixelmike; 22.11.2015
comment
Правда, просто не пользовался, но свой ответ обновил - person Brocco; 23.11.2015

Ищете решение в браузере? Если это так, я настоятельно рекомендую свой проект Zwitterion. Он устраняет сложные этапы сборки и позволяет вам включать TypeScript прямо в браузер с помощью обычных тегов сценария. Вы также можете напрямую использовать стандартные модули ES без дополнительной настройки. Для этого он использует SystemJS под капотом. Пока нет поддержки исходной карты, но она должна появиться. Если вам нужна дополнительная информация помимо README, вы можете прочитать «Цвиттерион, забудьте про шаг сборки ".

person lastmjs    schedule 01.08.2017