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 9103ff7405c..9c4cd30fe2b 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 @@ -12,6 +12,9 @@ import org.jetbrains.kotlin.gradle.targets.js.NpmVersions import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency import org.jetbrains.kotlin.gradle.targets.js.appendConfigsFromDir import org.jetbrains.kotlin.gradle.targets.js.jsQuoted +import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.EXTRACT +import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.IMPORT +import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.INLINE import java.io.File import java.io.Serializable import java.io.StringWriter @@ -57,10 +60,12 @@ data class KotlinWebpackConfig( if (!cssSettings.enabled) return@also it.add(versions.cssLoader) - if (cssSettings.inline) { - it.add(versions.styleLoader) - } else { - it.add(versions.miniCssExtractPlugin) + when (cssSettings.mode) { + EXTRACT -> it.add(versions.miniCssExtractPlugin) + INLINE -> it.add(versions.styleLoader) + IMPORT -> { + } + else -> cssError() } } @@ -288,10 +293,12 @@ data class KotlinWebpackConfig( | """.trimMargin() - if (cssSettings.inline) { - appendln(inlinedCss) - } else { - appendln(extractedCss) + when (cssSettings.mode) { + EXTRACT -> appendln(extractedCss) + INLINE -> appendln(inlinedCss) + IMPORT -> { + } + else -> cssError() } appendln( @@ -351,6 +358,17 @@ data class KotlinWebpackConfig( ) } + private fun cssError() { + throw IllegalStateException( + """ + Possible values for cssSettings.mode: + - EXTRACT + - INLINE + - IMPORT + """.trimIndent() + ) + } + private fun json(obj: Any) = StringWriter().also { GsonBuilder().setPrettyPrinting().create().toJson(obj, it) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackCssSettings.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackCssSettings.kt index 6ae43fceb12..b940e1f9025 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackCssSettings.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackCssSettings.kt @@ -6,11 +6,18 @@ package org.jetbrains.kotlin.gradle.targets.js.webpack import org.gradle.api.tasks.Input +import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.INLINE data class KotlinWebpackCssSettings( @Input var enabled: Boolean = true, @Input - var inline: Boolean = true -) \ No newline at end of file + var mode: String = INLINE +) + +object KotlinWebpackCssMode { + const val EXTRACT = "extract" + const val INLINE = "inline" + const val IMPORT = "import" +} \ No newline at end of file