Typescript не копирует файлы d.ts для сборки - PullRequest
2 голосов
/ 07 мая 2019

Так что, может быть, я запутался, но я подумал, что, если бы я добавил declaration:true в свой tsconfig.json, я мог бы сделать так, чтобы он скопировал мои *.d.ts файлы вместе с переданным кодом и это d.ts файлы?

EG:

- src
 - lib
   - types.d.ts
   - foo.ts

Я ожидаю, что результат tsc будет примерно таким:

- build
 - lib
   - types.d.ts
   - foo.js
   - foo.d.ts

Однако я не могу заставить скопировать types.d.ts в мою директорию сборки.

Разве машинопись не предоставляет какого-либо механизма для копирования .d.ts файлов? Или у меня где-то просто неверная конфигурация? (Я пробовал много разных конфигураций на данный момент; похоже, ничего не работает)

1 Ответ

2 голосов
/ 04 июня 2019

Вы правы - tsc не скопирует ваш пользовательский types.d.ts в ваш выходной каталог.tsc просто рассматривает ваши входные файлы и генерирует соответствующий файл d.ts для каждого.

Позвольте мне процитировать некоторые полезные фразы от разработчиков машинописи, иллюстрирующие ихточка зрения:

Используемые вами файлы .d.ts являются входными данными для системы сборки, но не выходными данными.Вполне разумно использовать некоторые типы из .d.ts, но ваш вывод не использует эти типы, поэтому не было бы никакой причины распространять входные данные .d.ts с вашими результатами сборки.[...] Похоже, вы захотите выполнить шаг после сборки в своем инструменте сборки, чтобы скопировать соответствующие файлы .d.ts, где бы они вам ни понадобились.

.

Файлы .d.ts считаются «ссылками», компилятор не будет их трогать, не перемещать и не создавать заново.

Так что в основном мне приходят в голову эти опции:

  • Скопируйте types.d.ts вручную на этапе сборки.
  • Как-нибудь интегрируйте ваш types.d.ts во входные файлы -так как вы хотите связать их вместе с вашим источником, я предполагаю, что они все равно должны быть как-то взаимосвязаны (?).
  • Вы можете попытаться включить types.d.ts непосредственно в tsconfig.json - например, через files, include, см. здесь

Если вы можете потреблять lib как пакет npm, и вы

  • ... его владелец,предоставьте поле types в файле package.json, в котором вы определите все необходимые типы.
  • ... не владелец этого, вы можете определить его как окружающий модуль .

Надеюсь, это поможет.

...