Я ищу предложения по автоматическому включению объявлений внешнего модуля узла компиляции TypeScript (commonjs) для пакета npm, который я сейчас пишу на TypeScript. Кажется, я столкнулся с некоторыми проблемами в отношении понимания подходящего способа заставить TypeScript генерировать объявления внешних модулей для node / commonjs.
Для некоторой предыстории наш модуль в настоящее время публикуется с использованием модулей npm с ограниченным объемом, например, «@ company / module». Поэтому мы отмечаем, что для того, чтобы машинописный текст мог разрешить модуль с ограниченной областью видимости, ему необходимо полностью определенное объявление имени внешнего модуля «@ company / module», и оно относится к генерации именованных внешних модулей, и действительно, подходящий способ генерировать объявления внешних модулей из компилятора, в котором мы не уверены.
Наш модуль настроен примерно так, как в следующем примере.
TypeScript
Следующий код скомпилирован как index.js и bar.js соответственно.
// ./bar.ts
export class Bar {}
// ./index.ts
import { Bar } from "./bar"
export class Foo {
constructor(private bar: Bar) {}
}
Объявление TypeScript
Ниже приведен идеализированный вывод, который мы хотели бы сгенерировать из компилятора машинописного текста.
// ./index.d.ts
declare module "@company/module/bar" {
export class Bar {}
}
declare module "@company/foo" {
import { Bar } from "@company/module/bar"
export class Foo {
constructor(private bar: Bar)
}
}
Похоже, что нет краткого / четкого способа сгенерировать указанное выше объявление непосредственно из TypeScript. Однако мы нашли способ обойти это, а именно:
- скомпилировать объявление отдельно, используя модуль: AMD - outFile (выдает пакет объявлений и "внешние" объявления)
- переписать скомпилированное объявление AMD и модуль объявления с префиксом "@ company / module" (включая импорт)
Похоже, что в репозитории TS есть несколько проблем с github, связанных с генерацией объединенных объявлений таким образом, но они, похоже, являются давними проблемами, на них ссылаются ниже.
Файл объявления пакета для пакетов commonjs - (кажется идеальным) https://github.com/Microsoft/TypeScript/pull/3159
Предложение: объединение определений типов модулей TS https://github.com/Microsoft/TypeScript/issues/4434
Я ищу другой опыт публикации объявлений npm библиотек TypeScript в NPM. Открыт для всех предложений!
Огромное спасибо