Какой самый эффективный способ создания объявлений типов для проекта (библиотеки) Typescript вместе с с передачей и связыванием кода?
Я использую webpack , ts-loader и fork-ts-checker-webpack-plugin .
В одном цикле сборки (команда сборки) я пытаюсь получить:
- dev версия библиотеки (unminified, встроенные исходные карты и т. Д.)
- prod версия библиотеки (минимизировано + отдельный файл карты источника)
- объявление типа
Первые 2 варианта работают хорошо с помощью fork-ts-checker-webpack-plugin. С потоком-загрузчиком и кеш-загрузчиком, добавленным в смесь, все становится еще лучше. Однако способ их работы не позволяет создавать файлы .d.ts.
Итак, что я пытаюсь выяснить, как лучше всего создавать такие файлы.
Прямо сейчас варианты, которые я вижу:
- Используйте
tsc
в конце связывания кода. Запустите его, например, spawnSync
.
- Создайте еще один объект конфигурации веб-пакета для запуска веб-пакета исключительно в режиме
emitDeclarationOnly
- Запустите ts-loader с
{transpileOnly: false, happyPackMode: false}
, но это побеждает цель использования потоков
Что может быть быстрее в целом? Есть ли другой подход?
Мой собственный ответ на данный момент, похоже, работает:
В webpack.config.js где-то над частью, которая экспортирует конфигурацию вашего веб-пакета, добавьте следующее (настройте аргументы в соответствии с вашими потребностями):
spawn("tsc", ["-p", "src", "--emitDeclarationOnly", "--declaration", "--declarationDir", "dist/@types", "--skipLibCheck"]);
Этот код порождает дочерний процесс и запускается параллельно с тем, что собирается делать веб-пакет. Так что теперь вебпаку вообще не нужно беспокоиться о типах Typescript.