Copy stdlib-js source map during JPS build
This commit is contained in:
@@ -30,16 +30,16 @@ object JsLibraryUtils {
|
|||||||
|
|
||||||
private val META_INF_RESOURCES = "${LibraryUtils.META_INF}resources/"
|
private val META_INF_RESOURCES = "${LibraryUtils.META_INF}resources/"
|
||||||
|
|
||||||
@JvmStatic fun copyJsFilesFromLibraries(libraries: List<String>, outputLibraryJsPath: String) {
|
@JvmStatic fun copyJsFilesFromLibraries(libraries: List<String>, outputLibraryJsPath: String, copySourceMap: Boolean = false) {
|
||||||
for (library in libraries) {
|
for (library in libraries) {
|
||||||
val file = File(library)
|
val file = File(library)
|
||||||
assert(file.exists()) { "Library $library not found" }
|
assert(file.exists()) { "Library $library not found" }
|
||||||
|
|
||||||
if (file.isDirectory) {
|
if (file.isDirectory) {
|
||||||
copyJsFilesFromDirectory(file, outputLibraryJsPath)
|
copyJsFilesFromDirectory(file, outputLibraryJsPath, copySourceMap)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
copyJsFilesFromZip(file, outputLibraryJsPath)
|
copyJsFilesFromZip(file, outputLibraryJsPath, copySourceMap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -68,10 +68,8 @@ object JsLibraryUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun copyJsFilesFromDirectory(dir: File, outputLibraryJsPath: String) {
|
private fun copyJsFilesFromDirectory(dir: File, outputLibraryJsPath: String, copySourceMap: Boolean) {
|
||||||
traverseDirectory(dir) { (content, path) ->
|
traverseDirectory(dir) { copyLibrary(outputLibraryJsPath, it, copySourceMap) }
|
||||||
FileUtil.writeToFile(File(outputLibraryJsPath, path), content)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun File.contentIfExists(): String? = if (exists()) readText() else null
|
private fun File.contentIfExists(): String? = if (exists()) readText() else null
|
||||||
@@ -99,9 +97,16 @@ object JsLibraryUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun copyJsFilesFromZip(file: File, outputLibraryJsPath: String) {
|
private fun copyJsFilesFromZip(file: File, outputLibraryJsPath: String, copySourceMap: Boolean) {
|
||||||
traverseArchive(file) { library ->
|
traverseArchive(file) { copyLibrary(outputLibraryJsPath, it, copySourceMap) }
|
||||||
FileUtil.writeToFile(File(outputLibraryJsPath, library.path), library.content)
|
}
|
||||||
|
|
||||||
|
private fun copyLibrary(outputPath: String, library: JsLibrary, copySourceMap: Boolean) {
|
||||||
|
val targetFile = File(outputPath, library.path)
|
||||||
|
targetFile.parentFile.mkdirs()
|
||||||
|
targetFile.writeText(library.content)
|
||||||
|
if (copySourceMap) {
|
||||||
|
library.sourceMapContent?.let { File(targetFile.parent, targetFile.name + ".map").writeText(it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -305,6 +305,9 @@ class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
|
|||||||
val sourceMapContent = File(getOutputDir(PROJECT_NAME), "$PROJECT_NAME.js.map").readText()
|
val sourceMapContent = File(getOutputDir(PROJECT_NAME), "$PROJECT_NAME.js.map").readText()
|
||||||
val expectedPath = "prefix-dir/pkg/test1.kt"
|
val expectedPath = "prefix-dir/pkg/test1.kt"
|
||||||
assertTrue("Source map file should contain relative path ($expectedPath)", sourceMapContent.contains("\"$expectedPath\""))
|
assertTrue("Source map file should contain relative path ($expectedPath)", sourceMapContent.contains("\"$expectedPath\""))
|
||||||
|
|
||||||
|
val librarySourceMapFile = File(getOutputDir(PROJECT_NAME), "lib/kotlin.js.map")
|
||||||
|
assertTrue("Source map for stdlib should be copied to $librarySourceMapFile", librarySourceMapFile.exists())
|
||||||
}
|
}
|
||||||
|
|
||||||
fun testKotlinJavaScriptProjectWithTwoModules() {
|
fun testKotlinJavaScriptProjectWithTwoModules() {
|
||||||
|
|||||||
@@ -679,11 +679,13 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
|
|||||||
val representativeTarget = chunk.representativeTarget()
|
val representativeTarget = chunk.representativeTarget()
|
||||||
val outputDir = KotlinBuilderModuleScriptGenerator.getOutputDirSafe(representativeTarget)
|
val outputDir = KotlinBuilderModuleScriptGenerator.getOutputDirSafe(representativeTarget)
|
||||||
val compilerSettings = JpsKotlinCompilerSettings.getCompilerSettings(representativeTarget.module)
|
val compilerSettings = JpsKotlinCompilerSettings.getCompilerSettings(representativeTarget.module)
|
||||||
|
val k2jsCompilerSettings = JpsKotlinCompilerSettings.getK2JsCompilerArguments(representativeTarget.module)
|
||||||
if (compilerSettings.copyJsLibraryFiles) {
|
if (compilerSettings.copyJsLibraryFiles) {
|
||||||
val outputLibraryRuntimeDirectory = File(outputDir, compilerSettings.outputDirectoryForJsLibraryFiles).absolutePath
|
val outputLibraryRuntimeDirectory = File(outputDir, compilerSettings.outputDirectoryForJsLibraryFiles).absolutePath
|
||||||
val libraryFilesToCopy = arrayListOf<String>()
|
val libraryFilesToCopy = arrayListOf<String>()
|
||||||
JpsJsModuleUtils.getLibraryFiles(representativeTarget, libraryFilesToCopy)
|
JpsJsModuleUtils.getLibraryFiles(representativeTarget, libraryFilesToCopy)
|
||||||
JsLibraryUtils.copyJsFilesFromLibraries(libraryFilesToCopy, outputLibraryRuntimeDirectory)
|
JsLibraryUtils.copyJsFilesFromLibraries(libraryFilesToCopy, outputLibraryRuntimeDirectory,
|
||||||
|
copySourceMap = k2jsCompilerSettings.sourceMap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user