[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.RequiredKotlinJsDependency
import org.jetbrains.kotlin.gradle.targets.js.appendConfigsFromDir import org.jetbrains.kotlin.gradle.targets.js.appendConfigsFromDir
import org.jetbrains.kotlin.gradle.targets.js.jsQuoted 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.File
import java.io.Serializable import java.io.Serializable
import java.io.StringWriter import java.io.StringWriter
@@ -57,10 +60,12 @@ data class KotlinWebpackConfig(
if (!cssSettings.enabled) return@also if (!cssSettings.enabled) return@also
it.add(versions.cssLoader) it.add(versions.cssLoader)
if (cssSettings.inline) { when (cssSettings.mode) {
it.add(versions.styleLoader) EXTRACT -> it.add(versions.miniCssExtractPlugin)
} else { INLINE -> it.add(versions.styleLoader)
it.add(versions.miniCssExtractPlugin) IMPORT -> {
}
else -> cssError()
} }
} }
@@ -288,10 +293,12 @@ data class KotlinWebpackConfig(
| |
""".trimMargin() """.trimMargin()
if (cssSettings.inline) { when (cssSettings.mode) {
appendln(inlinedCss) EXTRACT -> appendln(extractedCss)
} else { INLINE -> appendln(inlinedCss)
appendln(extractedCss) IMPORT -> {
}
else -> cssError()
} }
appendln( 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 { private fun json(obj: Any) = StringWriter().also {
GsonBuilder().setPrettyPrinting().create().toJson(obj, it) GsonBuilder().setPrettyPrinting().create().toJson(obj, it)
@@ -6,11 +6,18 @@
package org.jetbrains.kotlin.gradle.targets.js.webpack package org.jetbrains.kotlin.gradle.targets.js.webpack
import org.gradle.api.tasks.Input import org.gradle.api.tasks.Input
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.INLINE
data class KotlinWebpackCssSettings( data class KotlinWebpackCssSettings(
@Input @Input
var enabled: Boolean = true, var enabled: Boolean = true,
@Input @Input
var inline: Boolean = true var mode: String = INLINE
) )
object KotlinWebpackCssMode {
const val EXTRACT = "extract"
const val INLINE = "inline"
const val IMPORT = "import"
}