Fix embedding sources to source maps when compiling JS stdlib

This commit is contained in:
Alexey Andreev
2017-10-02 11:37:28 +03:00
parent 3b3fd0fa0d
commit eaa8729259
+11 -12
View File
@@ -118,6 +118,7 @@ compileBuiltinsKotlin2Js {
metaInfo = false metaInfo = false
outputFile = "${buildDir}/classes/builtins/kotlin.js" outputFile = "${buildDir}/classes/builtins/kotlin.js"
sourceMap = true sourceMap = true
sourceMapPrefix = "./"
} }
} }
@@ -126,6 +127,7 @@ compileKotlin2Js {
kotlinOptions { kotlinOptions {
outputFile = "${buildDir}/classes/main/kotlin.js" outputFile = "${buildDir}/classes/main/kotlin.js"
sourceMap = true sourceMap = true
sourceMapPrefix = "./"
} }
} }
@@ -149,7 +151,7 @@ task compileJs(type: JavaExec) {
} }
main = "org.jetbrains.kotlin.js.FileMergerKt" main = "org.jetbrains.kotlin.js.FileMergerKt"
args = [jsOutputFile, "$rootDir/../", "$jsSrcDir/wrapper.js"] + inputFiles.collect { it.path } + args = [jsOutputFile, rootDir, "$jsSrcDir/wrapper.js"] + inputFiles.collect { it.path } +
["$buildDir/classes/builtins/kotlin.js", "$buildDir/classes/main/kotlin.js"] ["$buildDir/classes/builtins/kotlin.js", "$buildDir/classes/main/kotlin.js"]
classpath = configurations.merger classpath = configurations.merger
@@ -172,25 +174,22 @@ task compileJs(type: JavaExec) {
def sourceMapFile = file("${jsOutputFile}.map") def sourceMapFile = file("${jsOutputFile}.map")
def sourceMap = new groovy.json.JsonSlurper().parseText(sourceMapFile.text) def sourceMap = new groovy.json.JsonSlurper().parseText(sourceMapFile.text)
def sourceMapSourcesBaseDirs = [ "${rootDir}/..", jsSrcJsDir ]
sourceMap.sourcesContent = sourceMap.sources.collect { sourceName ->
sourceMapSourcesBaseDirs.collect { file("$it/$sourceName") }.find { it.exists() && it.name != "kotlin.js" }?.text
}
def sourceMapBasePaths = [ def sourceMapBasePaths = [
"js/js.libraries/src/", "./",
"libraries/stdlib/js/build/builtin-sources/", "/js.libraries/src/js/"
"libraries/stdlib/js/build/builtin-sources-for-builtins/",
"libraries/stdlib/js/build/builtin-sources-for-builtins/",
"libraries/stdlib/js/build/common-sources/"
] ]
sourceMap.sources = sourceMap.sources.collect { sourcePath -> sourceMap.sources = sourceMap.sources.collect { sourcePath ->
def prefixToRemove = sourceMapBasePaths.find { basePath -> sourcePath.startsWith(basePath) } def prefixToRemove = sourceMapBasePaths.find { basePath -> sourcePath.startsWith(basePath) }
if (prefixToRemove != null) sourcePath.substring(prefixToRemove.length()) else sourcePath if (prefixToRemove != null) sourcePath.substring(prefixToRemove.length()) else sourcePath
} }
def sourceMapSourcesBaseDirs = [ jsSrcDir, builtinsSrcDir2, builtinsSrcDir, commonSrcDir, rootDir ]
sourceMap.sourcesContent = sourceMap.sources.collect { sourceName ->
sourceMapSourcesBaseDirs.collect { file("$it/$sourceName") }.find { it.exists() && it.name != "kotlin.js" }?.text
}
sourceMapFile.text = groovy.json.JsonOutput.toJson(sourceMap) sourceMapFile.text = groovy.json.JsonOutput.toJson(sourceMap)
} }
} }