[Gradle, JS] Add compatibility with webpack 4
^KT-42921 fixed
This commit is contained in:
committed by
TeamCityServer
parent
a1a01a1428
commit
a291895ebe
+16
@@ -15,6 +15,8 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
|
|||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat
|
import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat.Companion.externalsOutputFormatProperty
|
import org.jetbrains.kotlin.gradle.targets.js.dukat.ExternalsOutputFormat.Companion.externalsOutputFormatProperty
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.warningMessage
|
||||||
import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter
|
import org.jetbrains.kotlin.gradle.targets.native.DisabledNativeTargetsReporter
|
||||||
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
|
||||||
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||||
@@ -248,6 +250,20 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
|||||||
val jsCompiler: KotlinJsCompilerType
|
val jsCompiler: KotlinJsCompilerType
|
||||||
get() = property(jsCompilerProperty)?.let { KotlinJsCompilerType.byArgumentOrNull(it) } ?: KotlinJsCompilerType.LEGACY
|
get() = property(jsCompilerProperty)?.let { KotlinJsCompilerType.byArgumentOrNull(it) } ?: KotlinJsCompilerType.LEGACY
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use Webpack 4 for compatibility
|
||||||
|
*/
|
||||||
|
val webpackMajorVersion: WebpackMajorVersion
|
||||||
|
get() = property(WebpackMajorVersion.webpackMajorVersion)?.let { WebpackMajorVersion.byArgument(it) }
|
||||||
|
?.also { version ->
|
||||||
|
if (!WebpackMajorVersion.webpackVersionWarning && version != WebpackMajorVersion.DEFAULT) {
|
||||||
|
WebpackMajorVersion.webpackVersionWarning = true
|
||||||
|
project.logger.warn(WebpackMajorVersion.warningMessage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?: WebpackMajorVersion.DEFAULT
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default mode of generating of Dukat
|
* Default mode of generating of Dukat
|
||||||
*/
|
*/
|
||||||
|
|||||||
+2
@@ -12,10 +12,12 @@ package org.jetbrains.kotlin.gradle.targets.js
|
|||||||
class NpmVersions {
|
class NpmVersions {
|
||||||
val dukat = NpmPackageVersion("dukat", "0.5.8-rc.4")
|
val dukat = NpmPackageVersion("dukat", "0.5.8-rc.4")
|
||||||
val webpack = NpmPackageVersion("webpack", "5.26.2")
|
val webpack = NpmPackageVersion("webpack", "5.26.2")
|
||||||
|
val webpack4 = NpmPackageVersion("webpack", "4.44.1")
|
||||||
val webpackCli = NpmPackageVersion("webpack-cli", "4.5.0")
|
val webpackCli = NpmPackageVersion("webpack-cli", "4.5.0")
|
||||||
val webpackBundleAnalyzer = NpmPackageVersion("webpack-bundle-analyzer", "4.4.0")
|
val webpackBundleAnalyzer = NpmPackageVersion("webpack-bundle-analyzer", "4.4.0")
|
||||||
val webpackDevServer = NpmPackageVersion("webpack-dev-server", "3.11.2")
|
val webpackDevServer = NpmPackageVersion("webpack-dev-server", "3.11.2")
|
||||||
val sourceMapLoader = NpmPackageVersion("source-map-loader", "2.0.1")
|
val sourceMapLoader = NpmPackageVersion("source-map-loader", "2.0.1")
|
||||||
|
val sourceMapLoader1 = NpmPackageVersion("source-map-loader", "1.1.0")
|
||||||
val sourceMapSupport = NpmPackageVersion("source-map-support", "0.5.19")
|
val sourceMapSupport = NpmPackageVersion("source-map-support", "0.5.19")
|
||||||
val cssLoader = NpmPackageVersion("css-loader", "5.1.3")
|
val cssLoader = NpmPackageVersion("css-loader", "5.1.3")
|
||||||
val styleLoader = NpmPackageVersion("style-loader", "2.0.0")
|
val styleLoader = NpmPackageVersion("style-loader", "2.0.0")
|
||||||
|
|||||||
+11
-1
@@ -10,6 +10,7 @@ import org.gradle.api.provider.Provider
|
|||||||
import org.gradle.api.tasks.Copy
|
import org.gradle.api.tasks.Copy
|
||||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDceDsl
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalDceDsl
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsBinaryMode
|
||||||
@@ -22,6 +23,8 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack
|
|||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.choose
|
||||||
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
||||||
import org.jetbrains.kotlin.gradle.utils.newFileProperty
|
import org.jetbrains.kotlin.gradle.utils.newFileProperty
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -34,6 +37,10 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
|
|||||||
private val webpackTaskConfigurations: MutableList<KotlinWebpack.() -> Unit> = mutableListOf()
|
private val webpackTaskConfigurations: MutableList<KotlinWebpack.() -> Unit> = mutableListOf()
|
||||||
private val runTaskConfigurations: MutableList<KotlinWebpack.() -> Unit> = mutableListOf()
|
private val runTaskConfigurations: MutableList<KotlinWebpack.() -> Unit> = mutableListOf()
|
||||||
|
|
||||||
|
private val propertiesProvider = PropertiesProvider(project)
|
||||||
|
private val webpackMajorVersion
|
||||||
|
get() = propertiesProvider.webpackMajorVersion
|
||||||
|
|
||||||
override val testTaskDescription: String
|
override val testTaskDescription: String
|
||||||
get() = "Run all ${target.name} tests inside browser using karma and webpack"
|
get() = "Run all ${target.name} tests inside browser using karma and webpack"
|
||||||
|
|
||||||
@@ -99,7 +106,10 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) :
|
|||||||
.resolve(binary.linkTask.get().outputFile.name)
|
.resolve(binary.linkTask.get().outputFile.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
task.args.add(0, "serve")
|
webpackMajorVersion.choose(
|
||||||
|
{ task.args.add(0, "serve") },
|
||||||
|
{ task.bin = "webpack-dev-server/bin/webpack-dev-server.js" }
|
||||||
|
)()
|
||||||
task.description = "start ${mode.name.toLowerCase()} webpack dev server"
|
task.description = "start ${mode.name.toLowerCase()} webpack dev server"
|
||||||
|
|
||||||
task.devServer = KotlinWebpackConfig.DevServer(
|
task.devServer = KotlinWebpackConfig.DevServer(
|
||||||
|
|||||||
+11
-1
@@ -12,6 +12,7 @@ import org.gradle.language.base.plugins.LifecycleBasePlugin
|
|||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJsDce
|
||||||
import org.jetbrains.kotlin.gradle.plugin.COMPILER_CLASSPATH_CONFIGURATION_NAME
|
import org.jetbrains.kotlin.gradle.plugin.COMPILER_CLASSPATH_CONFIGURATION_NAME
|
||||||
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTarget
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
|
import org.jetbrains.kotlin.gradle.targets.js.dsl.*
|
||||||
@@ -25,6 +26,8 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpack
|
|||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackDevtool
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.choose
|
||||||
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
import org.jetbrains.kotlin.gradle.tasks.dependsOn
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName
|
||||||
@@ -40,6 +43,9 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
|
|||||||
private val runTaskConfigurations: MutableList<KotlinWebpack.() -> Unit> = mutableListOf()
|
private val runTaskConfigurations: MutableList<KotlinWebpack.() -> Unit> = mutableListOf()
|
||||||
private val dceConfigurations: MutableList<KotlinJsDce.() -> Unit> = mutableListOf()
|
private val dceConfigurations: MutableList<KotlinJsDce.() -> Unit> = mutableListOf()
|
||||||
private val distribution: Distribution = DefaultDistribution(project)
|
private val distribution: Distribution = DefaultDistribution(project)
|
||||||
|
private val propertiesProvider = PropertiesProvider(project)
|
||||||
|
private val webpackMajorVersion
|
||||||
|
get() = propertiesProvider.webpackMajorVersion
|
||||||
|
|
||||||
override val testTaskDescription: String
|
override val testTaskDescription: String
|
||||||
get() = "Run all ${target.name} tests inside browser using karma and webpack"
|
get() = "Run all ${target.name} tests inside browser using karma and webpack"
|
||||||
@@ -128,7 +134,11 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) :
|
|||||||
),
|
),
|
||||||
listOf(compilation)
|
listOf(compilation)
|
||||||
) { task ->
|
) { task ->
|
||||||
task.args.add(0, "serve")
|
webpackMajorVersion.choose(
|
||||||
|
{ task.args.add(0, "serve") },
|
||||||
|
{ task.bin = "webpack-dev-server/bin/webpack-dev-server.js" }
|
||||||
|
)()
|
||||||
|
|
||||||
task.description = "start ${type.name.toLowerCase()} webpack dev server"
|
task.description = "start ${type.name.toLowerCase()} webpack dev server"
|
||||||
|
|
||||||
task.devServer = KotlinWebpackConfig.DevServer(
|
task.devServer = KotlinWebpackConfig.DevServer(
|
||||||
|
|||||||
+18
-3
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.gradle.internal.processLogMessage
|
|||||||
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClientSettings
|
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesClientSettings
|
||||||
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec
|
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutionSpec
|
||||||
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutor.Companion.TC_PROJECT_PROPERTY
|
import org.jetbrains.kotlin.gradle.internal.testing.TCServiceMessagesTestExecutor.Companion.TC_PROJECT_PROPERTY
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.NpmPackageVersion
|
import org.jetbrains.kotlin.gradle.targets.js.NpmPackageVersion
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
|
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
|
||||||
@@ -30,6 +31,7 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
|||||||
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.testing.*
|
import org.jetbrains.kotlin.gradle.targets.js.testing.*
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.choose
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTest
|
import org.jetbrains.kotlin.gradle.tasks.KotlinTest
|
||||||
import org.jetbrains.kotlin.gradle.testing.internal.reportsDir
|
import org.jetbrains.kotlin.gradle.testing.internal.reportsDir
|
||||||
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
|
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
|
||||||
@@ -76,13 +78,16 @@ class KotlinKarma(
|
|||||||
override val settingsState: String
|
override val settingsState: String
|
||||||
get() = "KotlinKarma($config)"
|
get() = "KotlinKarma($config)"
|
||||||
|
|
||||||
|
private val webpackMajorVersion = PropertiesProvider(project).webpackMajorVersion
|
||||||
|
|
||||||
val webpackConfig = KotlinWebpackConfig(
|
val webpackConfig = KotlinWebpackConfig(
|
||||||
configDirectory = project.projectDir.resolve("webpack.config.d"),
|
configDirectory = project.projectDir.resolve("webpack.config.d"),
|
||||||
sourceMaps = true,
|
sourceMaps = true,
|
||||||
devtool = null,
|
devtool = null,
|
||||||
export = false,
|
export = false,
|
||||||
progressReporter = true,
|
progressReporter = true,
|
||||||
progressReporterPathFilter = nodeJs.rootPackageDir.absolutePath
|
progressReporterPathFilter = nodeJs.rootPackageDir.absolutePath,
|
||||||
|
webpackMajorVersion = webpackMajorVersion
|
||||||
)
|
)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@@ -200,10 +205,20 @@ class KotlinKarma(
|
|||||||
|
|
||||||
private fun useWebpack() {
|
private fun useWebpack() {
|
||||||
requiredDependencies.add(versions.karmaWebpack)
|
requiredDependencies.add(versions.karmaWebpack)
|
||||||
requiredDependencies.add(versions.webpack)
|
requiredDependencies.add(
|
||||||
|
webpackMajorVersion.choose(
|
||||||
|
versions.webpack,
|
||||||
|
versions.webpack4
|
||||||
|
)
|
||||||
|
)
|
||||||
requiredDependencies.add(versions.webpackCli)
|
requiredDependencies.add(versions.webpackCli)
|
||||||
requiredDependencies.add(versions.formatUtil)
|
requiredDependencies.add(versions.formatUtil)
|
||||||
requiredDependencies.add(versions.sourceMapLoader)
|
requiredDependencies.add(
|
||||||
|
webpackMajorVersion.choose(
|
||||||
|
versions.sourceMapLoader,
|
||||||
|
versions.sourceMapLoader1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
addPreprocessor("webpack")
|
addPreprocessor("webpack")
|
||||||
confJsWriters.add {
|
confJsWriters.add {
|
||||||
|
|||||||
+6
-1
@@ -18,6 +18,7 @@ import org.gradle.deployment.internal.DeploymentHandle
|
|||||||
import org.gradle.deployment.internal.DeploymentRegistry
|
import org.gradle.deployment.internal.DeploymentRegistry
|
||||||
import org.gradle.process.internal.ExecHandle
|
import org.gradle.process.internal.ExecHandle
|
||||||
import org.gradle.process.internal.ExecHandleFactory
|
import org.gradle.process.internal.ExecHandleFactory
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
|
import org.jetbrains.kotlin.gradle.targets.js.RequiredKotlinJsDependency
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
|
||||||
@@ -205,6 +206,9 @@ constructor(
|
|||||||
@Nested
|
@Nested
|
||||||
val synthConfig = KotlinWebpackConfig()
|
val synthConfig = KotlinWebpackConfig()
|
||||||
|
|
||||||
|
@Input
|
||||||
|
val webpackMajorVersion = PropertiesProvider(project).webpackMajorVersion
|
||||||
|
|
||||||
fun webpackConfigApplier(body: KotlinWebpackConfig.() -> Unit) {
|
fun webpackConfigApplier(body: KotlinWebpackConfig.() -> Unit) {
|
||||||
synthConfig.body()
|
synthConfig.body()
|
||||||
webpackConfigAppliers.add(body)
|
webpackConfigAppliers.add(body)
|
||||||
@@ -227,7 +231,8 @@ constructor(
|
|||||||
devServer = devServer,
|
devServer = devServer,
|
||||||
devtool = devtool,
|
devtool = devtool,
|
||||||
sourceMaps = sourceMaps,
|
sourceMaps = sourceMaps,
|
||||||
resolveFromModulesFirst = resolveFromModulesFirst
|
resolveFromModulesFirst = resolveFromModulesFirst,
|
||||||
|
webpackMajorVersion = webpackMajorVersion
|
||||||
)
|
)
|
||||||
|
|
||||||
webpackConfigAppliers
|
webpackConfigAppliers
|
||||||
|
|||||||
+27
-4
@@ -19,6 +19,7 @@ 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.EXTRACT
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.IMPORT
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.IMPORT
|
||||||
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.INLINE
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackCssMode.INLINE
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.WebpackMajorVersion.Companion.choose
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
import java.io.StringWriter
|
import java.io.StringWriter
|
||||||
@@ -63,7 +64,9 @@ data class KotlinWebpackConfig(
|
|||||||
@Optional
|
@Optional
|
||||||
var progressReporterPathFilter: String? = null,
|
var progressReporterPathFilter: String? = null,
|
||||||
@Input
|
@Input
|
||||||
var resolveFromModulesFirst: Boolean = false
|
var resolveFromModulesFirst: Boolean = false,
|
||||||
|
@Input
|
||||||
|
val webpackMajorVersion: WebpackMajorVersion = WebpackMajorVersion.V5
|
||||||
) {
|
) {
|
||||||
@get:Input
|
@get:Input
|
||||||
@get:Optional
|
@get:Optional
|
||||||
@@ -93,7 +96,12 @@ data class KotlinWebpackConfig(
|
|||||||
fun getRequiredDependencies(versions: NpmVersions) =
|
fun getRequiredDependencies(versions: NpmVersions) =
|
||||||
mutableSetOf<RequiredKotlinJsDependency>().also {
|
mutableSetOf<RequiredKotlinJsDependency>().also {
|
||||||
it.add(versions.kotlinJsTestRunner)
|
it.add(versions.kotlinJsTestRunner)
|
||||||
it.add(versions.webpack)
|
it.add(
|
||||||
|
webpackMajorVersion.choose(
|
||||||
|
versions.webpack,
|
||||||
|
versions.webpack4
|
||||||
|
)
|
||||||
|
)
|
||||||
it.add(versions.webpackCli)
|
it.add(versions.webpackCli)
|
||||||
it.add(versions.formatUtil)
|
it.add(versions.formatUtil)
|
||||||
|
|
||||||
@@ -102,7 +110,12 @@ data class KotlinWebpackConfig(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (sourceMaps) {
|
if (sourceMaps) {
|
||||||
it.add(versions.sourceMapLoader)
|
it.add(
|
||||||
|
webpackMajorVersion.choose(
|
||||||
|
versions.sourceMapLoader,
|
||||||
|
versions.sourceMapLoader1
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (devServer != null) {
|
if (devServer != null) {
|
||||||
@@ -269,7 +282,17 @@ data class KotlinWebpackConfig(
|
|||||||
enforce: "pre"
|
enforce: "pre"
|
||||||
});
|
});
|
||||||
config.devtool = ${devtool?.let { "'$it'" } ?: false};
|
config.devtool = ${devtool?.let { "'$it'" } ?: false};
|
||||||
config.ignoreWarnings = [/Failed to parse source map/]
|
${
|
||||||
|
webpackMajorVersion.choose(
|
||||||
|
"config.ignoreWarnings = [/Failed to parse source map/]",
|
||||||
|
"""
|
||||||
|
config.stats = config.stats || {}
|
||||||
|
Object.assign(config.stats, config.stats, {
|
||||||
|
warningsFilter: [/Failed to parse source map/]
|
||||||
|
})
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
)
|
)
|
||||||
|
|||||||
+45
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 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
|
||||||
|
|
||||||
|
enum class WebpackMajorVersion(
|
||||||
|
val value: String
|
||||||
|
) {
|
||||||
|
V4("4"),
|
||||||
|
V5("5");
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val DEFAULT = V5
|
||||||
|
|
||||||
|
const val webpackMajorVersion = "kotlin.js.webpack.major.version"
|
||||||
|
|
||||||
|
const val warningMessage = "Default webpack version now is 5. Support of webpack 4 is deprecated."
|
||||||
|
|
||||||
|
var webpackVersionWarning = false
|
||||||
|
|
||||||
|
fun byArgumentOrNull(argument: String): WebpackMajorVersion? =
|
||||||
|
when (argument) {
|
||||||
|
"4" -> V4
|
||||||
|
"5" -> V5
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
|
||||||
|
fun byArgument(argument: String): WebpackMajorVersion =
|
||||||
|
byArgumentOrNull(argument)
|
||||||
|
?: throw IllegalArgumentException(
|
||||||
|
"This webpack major version is not supported. Use [${WebpackMajorVersion.values().toList().joinToString { it.value }}]"
|
||||||
|
)
|
||||||
|
|
||||||
|
fun <T> WebpackMajorVersion.choose(
|
||||||
|
defaultValue: T,
|
||||||
|
v4Value: T
|
||||||
|
): T =
|
||||||
|
when (this) {
|
||||||
|
V5 -> defaultValue
|
||||||
|
V4 -> v4Value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user