Spec-Zone.ru › Kotlin 1.8

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

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

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

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

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

Последнее изменение: 10 января 2023
Безопасный с точки зрения типов DSL для HTML Примеры

© 2010–2023 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