Какой самый эффективный способ создания объявлений типа? - PullRequest
0 голосов
/ 05 сентября 2018

Какой самый эффективный способ создания объявлений типов для проекта (библиотеки) Typescript вместе с с передачей и связыванием кода?

Я использую webpack , ts-loader и fork-ts-checker-webpack-plugin .

В одном цикле сборки (команда сборки) я пытаюсь получить:

  1. dev версия библиотеки (unminified, встроенные исходные карты и т. Д.)
  2. prod версия библиотеки (минимизировано + отдельный файл карты источника)
  3. объявление типа

Первые 2 варианта работают хорошо с помощью fork-ts-checker-webpack-plugin. С потоком-загрузчиком и кеш-загрузчиком, добавленным в смесь, все становится еще лучше. Однако способ их работы не позволяет создавать файлы .d.ts.

Итак, что я пытаюсь выяснить, как лучше всего создавать такие файлы.

Прямо сейчас варианты, которые я вижу:

  1. Используйте tsc в конце связывания кода. Запустите его, например, spawnSync.
  2. Создайте еще один объект конфигурации веб-пакета для запуска веб-пакета исключительно в режиме emitDeclarationOnly
  3. Запустите ts-loader с {transpileOnly: false, happyPackMode: false}, но это побеждает цель использования потоков

Что может быть быстрее в целом? Есть ли другой подход?


Мой собственный ответ на данный момент, похоже, работает:

В webpack.config.js где-то над частью, которая экспортирует конфигурацию вашего веб-пакета, добавьте следующее (настройте аргументы в соответствии с вашими потребностями):

spawn("tsc", ["-p", "src", "--emitDeclarationOnly", "--declaration", "--declarationDir", "dist/@types", "--skipLibCheck"]);

Этот код порождает дочерний процесс и запускается параллельно с тем, что собирается делать веб-пакет. Так что теперь вебпаку вообще не нужно беспокоиться о типах Typescript.

...