From fbabbfab44e47cab79fce128a04450d1418cd73d Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Fri, 14 Feb 2020 13:23:46 +0300 Subject: [PATCH] [Gradle, JS] Add webpack output --- .../gradle/targets/js/webpack/KotlinWebpack.kt | 8 ++++++++ .../targets/js/webpack/KotlinWebpackConfig.kt | 12 ++++++++++-- .../targets/js/webpack/KotlinWebpackOutput.kt | 17 +++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackOutput.kt diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt index 66833efe843..1175d0b81d6 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpack.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode +import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackOutput.Companion.UMD import org.jetbrains.kotlin.gradle.testing.internal.reportsDir import org.jetbrains.kotlin.gradle.utils.injected import java.io.File @@ -75,6 +76,12 @@ open class KotlinWebpack : DefaultTask(), RequiresNpmDependencies { @Input var saveEvaluatedConfigFile: Boolean = true + @Nested + val output: KotlinWebpackOutput = KotlinWebpackOutput( + library = baseConventions?.archivesBaseName, + libraryTarget = UMD + ) + @get:Internal @Deprecated("use destinationDirectory instead", ReplaceWith("destinationDirectory")) val outputPath: File @@ -129,6 +136,7 @@ open class KotlinWebpack : DefaultTask(), RequiresNpmDependencies { mode = mode, entry = entry, reportEvaluatedConfigFile = if (saveEvaluatedConfigFile) evaluatedConfigFile else null, + output = output, outputPath = destinationDirectory, outputFileName = outputFileName, configDirectory = configDirectory, diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt index 55f1b5861a7..8012bb300a1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt @@ -20,6 +20,7 @@ import java.io.StringWriter data class KotlinWebpackConfig( val mode: Mode = Mode.DEVELOPMENT, val entry: File? = null, + val output: KotlinWebpackOutput? = null, val outputPath: File? = null, val outputFileName: String? = entry?.name, val configDirectory: File? = null, @@ -205,7 +206,12 @@ data class KotlinWebpackConfig( } private fun Appendable.appendEntry() { - if (entry == null || outputPath == null) return + if ( + entry == null + || outputPath == null + || output == null + ) + return val multiEntryOutput = "${outputFileName!!.removeSuffix(".js")}-[name].js" @@ -223,7 +229,9 @@ data class KotlinWebpackConfig( return chunkData.chunk.name === 'main' ? ${outputFileName.jsQuoted()} : ${multiEntryOutput.jsQuoted()}; - } + }, + library: "${output.library}", + libraryTarget: "${output.libraryTarget}", }; """.trimIndent() diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackOutput.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackOutput.kt new file mode 100644 index 00000000000..a4b17e62100 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackOutput.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.targets.js.webpack + +import org.gradle.api.tasks.Input + +data class KotlinWebpackOutput( + @Input var library: String?, + @Input var libraryTarget: String? +) { + companion object { + const val UMD = "umd" + } +} \ No newline at end of file