[Gradle, JS] generate typescript only if necessary

This commit is contained in:
Ilya Goncharov
2022-10-11 14:34:42 +02:00
committed by Space Team
parent f14d9679e0
commit f6aaf9bf4a
2 changed files with 14 additions and 17 deletions
@@ -36,6 +36,8 @@ sealed class JsIrBinary(
val linkTaskName: String = linkTaskName()
var generateTs: Boolean = false
val linkTask: TaskProvider<KotlinJsIrLink>
get() = target.project.tasks
.withType(KotlinJsIrLink::class.java)
@@ -26,7 +26,6 @@ import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
import org.jetbrains.kotlin.gradle.targets.js.binaryen.BinaryenExec
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
import org.jetbrains.kotlin.gradle.targets.js.internal.RewriteSourceMapFilterReader
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
import org.jetbrains.kotlin.gradle.targets.js.typescript.TypeScriptValidationTask
import org.jetbrains.kotlin.gradle.tasks.locateOrRegisterTask
@@ -161,11 +160,10 @@ constructor(
it.finalizedBy(syncTask)
if (tsValidationTask != null) {
if (binary.generateTs) {
it.finalizedBy(tsValidationTask)
}
}
}
}
}
@@ -201,21 +199,17 @@ constructor(
}
}
private fun registerTypeScriptCheckTask(binary: JsIrBinary): TaskProvider<TypeScriptValidationTask>? {
private fun registerTypeScriptCheckTask(binary: JsIrBinary): TaskProvider<TypeScriptValidationTask> {
val linkTask = binary.linkTask
val compilation = binary.compilation
return if (compilation.name == KotlinCompilation.TEST_COMPILATION_NAME) {
null
} else {
project.registerTask(binary.validateGeneratedTsTaskName, listOf(compilation)) {
it.inputDir.set(linkTask.flatMap { it.destinationDirectory })
it.validationStrategy.set(
when (binary.mode) {
KotlinJsBinaryMode.DEVELOPMENT -> propertiesProvider.jsIrGeneratedTypeScriptValidationDevStrategy
KotlinJsBinaryMode.PRODUCTION -> propertiesProvider.jsIrGeneratedTypeScriptValidationProdStrategy
}
)
}
return project.registerTask(binary.validateGeneratedTsTaskName, listOf(compilation)) {
it.inputDir.set(linkTask.flatMap { it.destinationDirectory })
it.validationStrategy.set(
when (binary.mode) {
KotlinJsBinaryMode.DEVELOPMENT -> propertiesProvider.jsIrGeneratedTypeScriptValidationDevStrategy
KotlinJsBinaryMode.PRODUCTION -> propertiesProvider.jsIrGeneratedTypeScriptValidationProdStrategy
}
)
}
}
@@ -388,9 +382,10 @@ constructor(
override fun generateTypeScriptDefinitions() {
compilations
.all {
binaries
it.binaries
.withType(JsIrBinary::class.java)
.all {
it.generateTs = true
it.linkTask.configure { linkTask ->
linkTask.compilerOptions.freeCompilerArgs.add(GENERATE_D_TS)
}