В настоящее время мой процесс сборки:
- Напишите много файлов машинописных текстов с синтаксисом модуля ES6
- Создайте index.ts, который повторно экспортирует все модули из одной точки
- Скомпилировать в систему CommonJS +
- Выходной дескриптор / файлы ввода
В результате создается файл index.js, который повторно экспортирует все внутренние файлы без необходимости его использования разработчиком, а также множество файлов d.ts, которые отражают файловую структуру.
Теперь это работает, но если бы я применил этот подход к браузеру, мне нужно было бы запаковать все js-файлы, иначе это был бы кошмар http-запроса, втягивающий все отдельные файлы. В настоящее время эта библиотека будет использоваться как зависимость для других библиотек, поэтому она не является конечной точкой для логики или чего-либо еще, это модуль / библиотека.
Теперь главный вопрос связан с веб-пакетом. Я знаю, что могу загрузить TS и получить модуль commonJS, однако я не могу найти способ сгенерировать d.ts
файлы с помощью веб-пакета. Итак, есть ли у меня способ использовать webpack в качестве компилятора / упаковщика в этом сценарии и получить выходные данные my-lib.js
и my-lib.d.ts
, а не текущий подход, который дает много отдельных файлов.
== Дополнительные пояснения по варианту использования ==
Просто чтобы попытаться убедиться, что все здесь на одной странице, когда я говорю, что это библиотека, которая будет использоваться повторно, я имею в виду, что это то, что будет загружено через npm или jspm или что-то еще в качестве зависимости модуля для других модули.
Так, например, давайте представим, что jquery не существует, и я собираюсь создать его, но напишу его в машинописном тексте, чтобы другие разработчики использовали его как в JS, так и в TS. Теперь typescript выводит как файлы js, так и файлы d.ts, файлы js должны использоваться, как и следовало ожидать, но файлы d.ts объясняют другим файлам машинописного текста, какие типы содержатся в библиотеке.
Итак, предполагая, что я разработал jquery в TS, как указано выше, я хотел бы опубликовать этот вывод (будь он создан с помощью webpack или tsc) в npm / jspm / bower и т. Д. Так что тогда другие могут повторно использовать эту библиотеку в своих собственных проектах. .
Таким образом, webpack обычно используется для упаковки «приложения», если хотите, которое содержит логику и бизнес-задачи и используется непосредственно как точка входа для более широкого набора проблем. В этом примере он будет использоваться как этап компиляции и упаковки для библиотеки и потребляться через var myLib = require("my-lib");
или аналогичный.