[Gradle, JS] generate typescript only if necessary
This commit is contained in:
committed by
Space Team
parent
f14d9679e0
commit
f6aaf9bf4a
+2
@@ -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)
|
||||
|
||||
+12
-17
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user