Spec-Zone.ru › Kotlin 1.7

Генерация внешних деклараций с помощью Dukat

Dukat всё ещё экспериментальный. Если вы столкнётесь с проблемами, пожалуйста, сообщите о них в трекере задач Dukat.

Dukat — это инструмент, который сейчас находится в разработке и позволяет автоматически преобразовывать файлы описания TypeScript (.d.ts) во внешние декларации Kotlin. Это призвано сделать использование библиотек из экосистемы JavaScript в Kotlin более удобным и безопасным с точки зрения типов, сократив необходимость ручного написания внешних деклараций и обёртки для JS-библиотек.

Плагин Kotlin/JS Gradle обеспечивает интеграцию с Dukat. При включении плагина автоматически генерируются безопасные с точки зрения типов внешние декларации Kotlin для npm-зависимостей, предоставляющих определения TypeScript. У вас есть два способа выбора, должен ли и когда Dukat генерировать декларации: во время сборки и вручную с помощью задачи Gradle.

Генерация внешних деклараций во время сборки

Функция npm зависимости принимает третий параметр после имени и версии пакета: generateExternals. Это позволяет управлять тем, нужно ли генерировать декларации для конкретной зависимости:

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 в корне вашего проекта. Здесь вы можете просмотреть сгенерированный код и скопировать необходимые части в свои каталоги исходных кодов.

Рекомендуется предоставлять внешние декларации вручную только в вашем каталоге исходных файлов или включать генерацию внешних деклараций во время сборки для каждой отдельной зависимости. Одновременное выполнение обоих способов может привести к проблемам с разрешением.

Последнее изменение: 08 сентября 2021
Безопасные с точки зрения типов HTML DSL Примеры

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API