Какой самый эффективный способ создания объявлений типа?
Каков наиболее эффективный способ создания объявлений типов для проекта (библиотеки) Typescript вместе с переносом и связыванием кода?
Я использую webpack, ts-loader и fork-ts-checker-webpack-plugin.
В одном цикле сборки (команда build) я пытаюсь получить:
- версия библиотеки dev (unminified, встроенные исходные карты и т. д.)
- расширенная версия библиотеки (минимизировано + отдельный файл карты источника)
- объявление типа
Первые 2 варианта работают хорошо с fork-ts-checker-webpack-plugin. С потоком-загрузчиком и кеш-загрузчиком, добавленным в микширование, все становится еще лучше. Однако то, как они работают, не позволяет создавать файлы.d.ts.
Итак, что я пытаюсь выяснить, каков наилучший способ испускать такие файлы.
Прямо сейчас варианты, которые я вижу:
- использование
tsc
в конце связывания кода. Запустить его сspawnSync
, например. - Создайте другой объект конфигурации webpack для запуска webpack исключительно в
emitDeclarationOnly
Режим - Запустите 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