Генерация внешних объявлений с помощью Dukat
Dukat — это инструмент, находящийся в разработке, который позволяет автоматически конвертировать файлы описания TypeScript (.d.ts) во внешние объявления Kotlin. Это призвано сделать использование библиотек из экосистемы JavaScript в Kotlin безопасным с точки зрения типов, уменьшив необходимость ручного написания внешних объявлений и обёртки для JS-библиотек.
Плагин Kotlin/JS Gradle интегрируется с Dukat. При включении плагина, внешние объявления Kotlin, безопасные с точки зрения типов, автоматически генерируются для npm-зависимостей, предоставляющих определения TypeScript. У вас есть два способа выбора, и когда Dukat должен генерировать объявления: во время сборки и вручную через задачу Gradle.
Генерация внешних объявлений во время сборки
Функция зависимости npm принимает третий параметр после имени и версии пакета: generateExternals. Это позволяет контролировать, должен ли Dukat генерировать объявления для конкретной зависимости:
dependencies {
implementation(npm("decamelize", "4.0.0", generateExternals = true))
}
dependencies {
implementation(npm('decamelize', '4.0.0', true))
}
Если репозиторий зависимости, которую вы хотите использовать, не предоставляет определения TypeScript, вы также можете использовать типы, предоставленные через репозиторий DefinitelyTyped. В этом случае убедитесь, что вы добавили зависимости npm для your-package и @types/your-package (с generateExternals = true).
Вы можете использовать опцию kotlin.js.generate.externals в вашем файле gradle.properties, чтобы установить поведение генератора для всех npm-зависимостей одновременно. Как обычно, индивидуальные явные настройки имеют приоритет над этой общей опцией.
Вручную сгенерировать внешние объявления через задачу Gradle
Если вы хотите иметь полный контроль над объявлениями, сгенерированными Dukat, хотите внести правки вручную или сталкиваетесь с проблемами при автоматическом генерировании внешних объявлений, вы также можете вручную инициировать создание объявлений для всех ваших npm-зависимостей через задачу Gradle generateExternals (jsGenerateExternals с плагином multiplatform). Это сгенерирует объявления в каталоге externals в корне вашего проекта. Здесь вы можете просмотреть сгенерированный код и скопировать необходимые части в свои каталоги исходных файлов.
Рекомендуется либо предоставлять внешние объявления вручную в папке исходных файлов или включить генерацию внешних объявлений во время сборки для любой отдельной зависимости. Одновременное выполнение обоих действий может привести к проблемам с разрешением.
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/js-external-declarations-with-dukat.html