diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt index bc2c2962fef..e7e106500ce 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinProperties.kt @@ -140,6 +140,18 @@ internal class PropertiesProvider(private val project: Project) { val nativeJvmArgs: String? get() = propertyWithDeprecatedVariant("kotlin.native.jvmArgs", "org.jetbrains.kotlin.native.jvmArgs") + /** + * Generate kotlin/js external declarations from all .d.ts files found in npm modules + */ + val jsGenerateExternals: Boolean? + get() = booleanProperty("kotlin.js.experimental.generateKotlinExternals") + + /** + * Automaticaly discover external .d.ts declarations + */ + val jsDiscoverTypes: Boolean? + get() = booleanProperty("kotlin.js.experimental.discoverTypes") + private fun propertyWithDeprecatedVariant(propName: String, deprecatedPropName: String): String? { val deprecatedProperty = property(deprecatedPropName) if (deprecatedProperty != null) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt index 9d2f7f79e6d..d695be9b0f5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootExtension.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.gradle.targets.js.nodejs import org.gradle.api.Project import org.jetbrains.kotlin.gradle.internal.isInIdeaSync import org.jetbrains.kotlin.gradle.logging.kotlinInfo +import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation import org.jetbrains.kotlin.gradle.targets.js.NpmVersions import org.jetbrains.kotlin.gradle.targets.js.npm.KotlinNpmResolutionManager @@ -36,9 +37,14 @@ open class NodeJsRootExtension(val rootProject: Project) { var packageManager: NpmApi = Yarn - class Experimental { - var generateKotlinExternals: Boolean = false - var discoverTypes: Boolean = false + private val projectProperties = PropertiesProvider(rootProject) + + inner class Experimental { + val generateKotlinExternals: Boolean + get() = projectProperties.jsGenerateExternals == true + + val discoverTypes: Boolean + get() = projectProperties.jsDiscoverTypes == true } val experimental = Experimental()