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

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

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

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

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

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

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

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

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

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


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

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

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

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

0 ответов

If you aim to run webpack by npm or yarn then first two steps means - dev and prod builds would be handled by webpack multiconfig. The types generation step then by npm/yarn custom post command called e.g. postbuild if build script provided

"scripts": {
    "postbuild": "tsc -p tsconfig.json --emitDeclarationOnly --declaration --declarationDir ./dist/@types --skipLibCheck",
    "build": "webpack"
}

All there steps takes place by executing single command

yarn build

or

npm run build

Другие вопросы по тегам