JS: add DCE devmode. Fix mapping paths in source maps
See KT-20210, KT-21307
This commit is contained in:
+26
-2
@@ -2,7 +2,6 @@ package org.jetbrains.kotlin.gradle
|
||||
|
||||
import org.gradle.api.logging.LogLevel
|
||||
import org.jetbrains.kotlin.gradle.tasks.USING_EXPERIMENTAL_JS_INCREMENTAL_COMPILATION_MESSAGE
|
||||
import org.jetbrains.kotlin.gradle.util.allKotlinFiles
|
||||
import org.jetbrains.kotlin.gradle.util.getFileByName
|
||||
import org.jetbrains.kotlin.gradle.util.modify
|
||||
import org.junit.Test
|
||||
@@ -223,11 +222,36 @@ class Kotlin2JsGradlePluginIT : BaseGradleIT() {
|
||||
val project = Project("kotlin2JsDceProject", "2.10", minLogLevel = LogLevel.INFO)
|
||||
|
||||
project.build("runRhino") {
|
||||
println(output)
|
||||
assertSuccessful()
|
||||
val pathPrefix = "mainProject/build/min"
|
||||
assertFileExists("$pathPrefix/exampleapp.js.map")
|
||||
assertFileExists("$pathPrefix/examplelib.js.map")
|
||||
assertFileContains("$pathPrefix/exampleapp.js.map", "\"../../src/main/kotlin/exampleapp/main.kt\"")
|
||||
|
||||
assertFileExists("$pathPrefix/kotlin.js")
|
||||
assertTrue(fileInWorkingDir("$pathPrefix/kotlin.js").length() < 500 * 1000, "Looks like kotlin.js file was not minified by DCE")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDceDevMode() {
|
||||
val project = Project("kotlin2JsDceProject", "2.10", minLogLevel = LogLevel.INFO)
|
||||
|
||||
project.setupWorkingDir()
|
||||
File(project.projectDir, "mainProject/build.gradle").modify {
|
||||
it + "\n" +
|
||||
"runDceKotlinJs.dceOptions.devMode = true\n"
|
||||
}
|
||||
|
||||
project.build("runRhino") {
|
||||
assertSuccessful()
|
||||
val pathPrefix = "mainProject/build/min"
|
||||
assertFileExists("$pathPrefix/exampleapp.js.map")
|
||||
assertFileExists("$pathPrefix/examplelib.js.map")
|
||||
assertFileContains("$pathPrefix/exampleapp.js.map", "\"../../src/main/kotlin/exampleapp/main.kt\"")
|
||||
|
||||
assertFileExists("$pathPrefix/kotlin.js")
|
||||
assertTrue(fileInWorkingDir("$pathPrefix/kotlin.js").length() > 1000 * 1000, "Looks like kotlin.js file was minified by DCE")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
@@ -3,4 +3,10 @@
|
||||
package org.jetbrains.kotlin.gradle.dsl
|
||||
|
||||
interface KotlinJsDceOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonToolOptions {
|
||||
|
||||
/**
|
||||
* Development mode: don't strip out any code, just copy dependencies and remap source maps
|
||||
* Default value: false
|
||||
*/
|
||||
var devMode: kotlin.Boolean
|
||||
}
|
||||
|
||||
+7
@@ -19,10 +19,16 @@ internal abstract class KotlinJsDceOptionsBase : org.jetbrains.kotlin.gradle.dsl
|
||||
get() = verboseField ?: false
|
||||
set(value) { verboseField = value }
|
||||
|
||||
private var devModeField: kotlin.Boolean? = null
|
||||
override var devMode: kotlin.Boolean
|
||||
get() = devModeField ?: false
|
||||
set(value) { devModeField = value }
|
||||
|
||||
internal open fun updateArguments(args: org.jetbrains.kotlin.cli.common.arguments.K2JSDceArguments) {
|
||||
allWarningsAsErrorsField?.let { args.allWarningsAsErrors = it }
|
||||
suppressWarningsField?.let { args.suppressWarnings = it }
|
||||
verboseField?.let { args.verbose = it }
|
||||
devModeField?.let { args.devMode = it }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,4 +36,5 @@ internal fun org.jetbrains.kotlin.cli.common.arguments.K2JSDceArguments.fillDefa
|
||||
allWarningsAsErrors = false
|
||||
suppressWarnings = false
|
||||
verbose = false
|
||||
devMode = false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user