~ require by relative path
diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index 991a5f0..aeccf9b 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt
@@ -230,7 +230,8 @@ generateFullJs = !arguments.irDce, generateDceJs = arguments.irDce, dceDriven = arguments.irDceDriven, - multiModule = arguments.irPerModule + multiModule = arguments.irPerModule, + commonJsRelativePath = true ) } catch (e: JsIrCompilationError) { return COMPILATION_ERROR @@ -239,9 +240,9 @@ val jsCode = if (arguments.irDce && !arguments.irDceDriven) compiledModule.dceJsCode!! else compiledModule.jsCode!! outputFile.writeText(jsCode.mainModule) jsCode.dependencies.forEach { (name, content) -> - val nodeModules = outputFile.resolveSibling("node_modules") - if (nodeModules.exists()) check(nodeModules.isDirectory) else nodeModules.mkdir() - nodeModules.resolve("$name.js").writeText(content) +// val nodeModules = outputFile.resolveSibling("node_modules") +// if (nodeModules.exists()) check(nodeModules.isDirectory) else nodeModules.mkdir() + outputFile.resolveSibling("$name.js").writeText(content) } if (arguments.generateDts) { val dtsFile = outputFile.withReplacedExtensionOrNull(outputFile.extension, "d.ts")!!
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt index 669473e8..3dba6bd 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt
@@ -46,7 +46,8 @@ generateDceJs: Boolean = false, dceDriven: Boolean = false, es6mode: Boolean = false, - multiModule: Boolean = false + multiModule: Boolean = false, + commonJsRelativePath: Boolean = false ): CompilerResult { stageController = object : StageController {} @@ -94,7 +95,8 @@ mainArguments, fullJs = true, dceJs = false, - multiModule = multiModule + multiModule = multiModule, + commonJsRelativePath = commonJsRelativePath ) return transformer.generateModule(allModules) } else { @@ -104,7 +106,8 @@ mainArguments, fullJs = generateFullJs, dceJs = generateDceJs, - multiModule = multiModule + multiModule = multiModule, + commonJsRelativePath = commonJsRelativePath ) return transformer.generateModule(allModules) }
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt index 7d33a3b..7fd930b 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt
@@ -32,7 +32,8 @@ var namer: NameTables = NameTables(emptyList()), private val fullJs: Boolean = true, private val dceJs: Boolean = false, - private val multiModule: Boolean = false + private val multiModule: Boolean = false, + private val commonJsRelativePath: Boolean = false ) { private val generateRegionComments = backendContext.configuration.getBoolean(JSConfigurationKeys.GENERATE_REGION_COMMENTS) @@ -204,7 +205,7 @@ } val moduleName = declareFreshGlobal(module.safeName) - modules += JsImportedModule(moduleName.ident, moduleName, moduleName.makeRef()) + modules += JsImportedModule(moduleName.ident, moduleName, moduleName.makeRef(), commonJsRelativePath) names.forEach { imports += JsVars(JsVars.JsVar(JsName(it), JsNameRef(it, JsNameRef("\$crossModule\$", moduleName.makeRef()))))
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt index 1d9aace..5ac6412 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt
@@ -94,7 +94,7 @@ val moduleName = scope.declareName("module") val requireName = scope.declareName("require") - val invocationArgs = importedModules.map { JsInvocation(requireName.makeRef(), JsStringLiteral(it.externalName)) } + val invocationArgs = importedModules.map { JsInvocation(requireName.makeRef(), JsStringLiteral(it.externalCommonJsName)) } val invocation = JsInvocation(function, listOf(JsNameRef("exports", moduleName.makeRef())) + invocationArgs) return listOf(invocation.makeStmt()) }
diff --git a/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt b/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt index 3a067e2..9bddb30 100644 --- a/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt +++ b/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt
@@ -16,7 +16,14 @@ package org.jetbrains.kotlin.js.backend.ast -class JsImportedModule(val externalName: String, var internalName: JsName, val plainReference: JsExpression?) { +class JsImportedModule(val externalName: String, var internalName: JsName, val plainReference: JsExpression?, val commonJsRelativePath: Boolean) { + + constructor(externalName: String, internalName: JsName, plainReference: JsExpression?): this(externalName, internalName, plainReference, false) + val key = JsImportedModuleKey(externalName, plainReference?.toString()) } + +val JsImportedModule.externalCommonJsName: String + get() = if (commonJsRelativePath) "./$externalName.js" else externalName + data class JsImportedModuleKey(val baseName: String, val plainName: String?) \ No newline at end of file
diff --git a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt index 18106a6..e42d269 100644 --- a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt +++ b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt
@@ -72,6 +72,6 @@ * Returns the current version of the Kotlin standard library. */ @kotlin.jvm.JvmField - public val CURRENT: KotlinVersion = KotlinVersion(1, 4, 255) // value is written here automatically during build + public val CURRENT: KotlinVersion = KotlinVersion(1, 4, 99) // value is written here automatically during build } }