Как создать один * .d.ts или несколько с относительным путем - PullRequest
0 голосов
/ 11 мая 2019

Задача

[Заражает только создателей библиотеки машинописи]

если база кода содержит абсолютные пути (путем настройки tsconfig.json и веб-пакета), то компилятор машинописного текста сгенерирует все файлы d.ts с теми же абсолютными путями, которые бесполезны, потому что мои потребители lib не могут ничего сделать с ними.


Обходные

Каждая библиотека, которую я видел , выполняет одно из следующих действий:

  1. создание собственного файла single-file.d.ts вручную
  2. используя относительный путь в своей базе кода, поэтому выходные файлы d.ts также содержат относительные пути.

Очевидно, что обе альтернативы - отстой.


Другое решение, о котором я думал

  1. создание одного файла d.ts (импорт не будет).

Мне не удалось найти рабочую библиотеку для этого.

  1. не уверен, возможно ли это: перед запуском ts-loader нам нужно запустить магический babel-плагин, чтобы преобразовать каждый абсолютный путь к родственнику, просмотрев раздел webpack-resol-module в файле webpack.config.

Мой текущий статус

Я создал библиотеку, которая генерирует поврежденные файлы d.ts с абсолютными путями:

https://github.com/stavalfi/lerna-yarn-workspaces-example/tree/master/packages/x-core

index.ts:

import { z, x } from 'shalom'     // problem
export default function awesomeFn(y: number): x {
  return z(1)
}

export { z, x } from './shalom' . // not a problem

сгенерированный index.d.ts:

import { x } from './shalom';     /// GOOD - becuase I used relative
export default function awesomeFn(y: number): x;
export { z, x } from 'shalom';    /// BAD - because I used absolute
//# sourceMappingURL=index.d.ts.map .   

Вопрос

Существуют ли какие-либо решения / обходные пути, которые не мешают использовать абсолютный путь или создавать мой собственный файл single.d.ts вручную?

1 Ответ

0 голосов
/ 18 мая 2019

Если у какого-либо создателя библиотеки машинописи все еще есть эта проблема, я создал загрузчик Webpack для babel-plugin-module-resolver, который преобразует абсолютные пути в относительные пути: https://github.com/stavalfi/babel-plugin-module-resolver-loader

Это также решило проблему*.d.ts файлы с абсолютными путями путем преобразования их в относительные пути.


Возможно, вы захотите подписаться / прочитать эту ветку для дополнительных обходных путей: https://github.com/Microsoft/TypeScript/issues/15479

...