Использование webpack для создания библиотек машинописных текстов с типизацией файлов

В настоящее время мой процесс сборки:

  • Напишите много файлов машинописных текстов с синтаксисом модуля 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"); или аналогичный.


person Grofit    schedule 14.01.2016    source источник
comment
Что за d.ts для браузера? Как это будет использоваться?   -  person vasa_c    schedule 14.01.2016
comment
d.ts не для браузера, это для библиотеки, как уже упоминалось, весь этот проект будет использоваться как библиотека / модуль, поэтому файлы d.ts предназначены специально для проверки набора текста, поэтому, если бы я хотел использовать типы в этом Библиотека в другом проекте машинописного текста мне понадобится файл d.ts для описания типов. Например, представьте, если бы я писал jquery в машинописном тексте, и я хотел бы получить веб-пакет для преобразования всех файлов машинописного текста в один файл jquery.js для включения куда угодно, а также jquery.d.ts для тех, кто хотел бы писать машинописный текст, включая типы в jquery.   -  person Grofit    schedule 14.01.2016
comment
Не совсем понимаю :) Но скорее всего невозможно. Насколько мне известно, даже для создания простого и сжатого файла требуется две конфигурации и два процесса.   -  person vasa_c    schedule 14.01.2016
comment
Если это невозможно, то все в порядке, я просто хотел посмотреть, могу ли я использовать веб-пакет, чтобы упростить здесь вещи.   -  person Grofit    schedule 14.01.2016
comment
@Grofit Вы уже предприняли какие-либо действия для решения этой проблемы?   -  person Matthias    schedule 18.08.2016
comment
@Matthias, извините, нет, я только что использовал одну из многих оболочек компилятора машинописного текста для вывода дескрипторов за пределы webpack.   -  person Grofit    schedule 23.08.2016


Ответы (1)


Создание файлов .d.ts не связано с webpack. С помощью webpack вы можете использовать либо ts-loader, либо awesome-typescript-loader. Оба они используют tsconfig.json. Вам нужно добавить declaration: true в свой tsconfig.json.

Я также предлагаю вам взглянуть на typescript-library-starter. Вы узнаете, как это настроено, включая определения UMD-пакетов и типов :).

person Alex JM    schedule 11.04.2017