[Gradle, JS] Css mode instead of boolean flag

#KT-32721 fixed
This commit is contained in:
Ilya Goncharov
2020-04-03 16:58:12 +03:00
parent e9bc64e103
commit bc0cfb67f6
2 changed files with 35 additions and 10 deletions
@@ -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)
@@ -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
)
var mode: String = INLINE
)
object KotlinWebpackCssMode {
const val EXTRACT = "extract"
const val INLINE = "inline"
const val IMPORT = "import"
}