From 9baa24e626b48ccfaacbf5724f58337cd29e80ab Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Fri, 23 Apr 2021 13:57:48 +0300 Subject: [PATCH] [Gradle, JS] Fix with beta version of webpack-dev-server to work with webpack 5 ^KT-46162 fixed ^KT-46331 fixed --- .../gradle/targets/js/NpmPackages.kt | 4 ++- .../kotlin/gradle/targets/js/NpmVersions.kt | 16 ++++++----- .../gradle/targets/js/ir/KotlinBrowserJsIr.kt | 20 ++++++++++---- .../targets/js/subtargets/KotlinBrowserJs.kt | 18 ++++++++++--- .../targets/js/testing/karma/KotlinKarma.kt | 7 ++++- .../targets/js/webpack/KotlinWebpackConfig.kt | 27 ++++++++++++------- 6 files changed, 64 insertions(+), 28 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt index b0408a82da8..c25d4db8e9c 100644 --- a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt +++ b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt @@ -10,8 +10,10 @@ val npmPackages = listOf( NpmPackage("webpack"), NpmPackage("webpack", "4.46.0", "webpack4"), NpmPackage("webpack-cli"), + NpmPackage("webpack-cli", "3.3.12", "webpackCli3"), NpmPackage("webpack-bundle-analyzer"), - NpmPackage("webpack-dev-server"), + NpmPackage("webpack-dev-server", "4.0.0-beta.2"), + NpmPackage("webpack-dev-server", "3.11.2", "webpackDevServer3"), NpmPackage("source-map-loader"), NpmPackage("source-map-loader", "1.1.3", "sourceMapLoader1"), NpmPackage("source-map-support"), diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt index 154b38aefbf..768ae03d10c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt @@ -14,19 +14,21 @@ import java.io.Serializable class NpmVersions : Serializable { val dukat = NpmPackageVersion("dukat", "0.5.8-rc.4") val webpack4 = NpmPackageVersion("webpack", "4.46.0") + val webpackCli3 = NpmPackageVersion("webpack-cli", "3.3.12") + val webpackDevServer = NpmPackageVersion("webpack-dev-server", "4.0.0-beta.2") + val webpackDevServer3 = NpmPackageVersion("webpack-dev-server", "3.11.2") val sourceMapLoader1 = NpmPackageVersion("source-map-loader", "1.1.3") - val webpack = NpmPackageVersion("webpack", "5.27.1") - val webpackCli = NpmPackageVersion("webpack-cli", "4.5.0") - val webpackBundleAnalyzer = NpmPackageVersion("webpack-bundle-analyzer", "4.4.0") - val webpackDevServer = NpmPackageVersion("webpack-dev-server", "3.11.2") + val webpack = NpmPackageVersion("webpack", "5.35.0") + val webpackCli = NpmPackageVersion("webpack-cli", "4.6.0") + val webpackBundleAnalyzer = NpmPackageVersion("webpack-bundle-analyzer", "4.4.1") val sourceMapLoader = NpmPackageVersion("source-map-loader", "2.0.1") val sourceMapSupport = NpmPackageVersion("source-map-support", "0.5.19") - val cssLoader = NpmPackageVersion("css-loader", "5.1.3") + val cssLoader = NpmPackageVersion("css-loader", "5.2.4") val styleLoader = NpmPackageVersion("style-loader", "2.0.0") val toStringLoader = NpmPackageVersion("to-string-loader", "1.1.6") - val miniCssExtractPlugin = NpmPackageVersion("mini-css-extract-plugin", "1.3.9") + val miniCssExtractPlugin = NpmPackageVersion("mini-css-extract-plugin", "1.5.0") val mocha = NpmPackageVersion("mocha", "8.3.2") - val karma = NpmPackageVersion("karma", "6.2.0") + val karma = NpmPackageVersion("karma", "6.3.2") val karmaChromeLauncher = NpmPackageVersion("karma-chrome-launcher", "3.1.0") val karmaPhantomjsLauncher = NpmPackageVersion("karma-phantomjs-launcher", "1.0.4") val karmaFirefoxLauncher = NpmPackageVersion("karma-firefox-launcher", "2.1.0") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt index 8fcdae1821c..eccf5312162 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/ir/KotlinBrowserJsIr.kt @@ -23,7 +23,6 @@ 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.Mode 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.utils.newFileProperty @@ -112,10 +111,21 @@ open class KotlinBrowserJsIr @Inject constructor(target: KotlinJsIrTarget) : )() task.description = "start ${mode.name.toLowerCase()} webpack dev server" - task.devServer = KotlinWebpackConfig.DevServer( - open = true, - contentBase = listOf(compilation.output.resourcesDir.canonicalPath) - ) + webpackMajorVersion.choose( + { + task.devServer = KotlinWebpackConfig.DevServer( + open = true, + static = mutableListOf(compilation.output.resourcesDir.canonicalPath) + ) + }, + { + task.devServer = KotlinWebpackConfig.DevServer( + open = true, + contentBase = mutableListOf(compilation.output.resourcesDir.canonicalPath) + ) + } + )() + task.outputs.upToDateWhen { false } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt index 650604dd4c5..8fef0c44934 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/subtargets/KotlinBrowserJs.kt @@ -141,10 +141,20 @@ open class KotlinBrowserJs @Inject constructor(target: KotlinJsTarget) : task.description = "start ${type.name.toLowerCase()} webpack dev server" - task.devServer = KotlinWebpackConfig.DevServer( - open = true, - contentBase = listOf(compilation.output.resourcesDir.canonicalPath) - ) + webpackMajorVersion.choose( + { + task.devServer = KotlinWebpackConfig.DevServer( + open = true, + static = mutableListOf(compilation.output.resourcesDir.canonicalPath) + ) + }, + { + task.devServer = KotlinWebpackConfig.DevServer( + open = true, + contentBase = mutableListOf(compilation.output.resourcesDir.canonicalPath) + ) + } + )() task.outputs.upToDateWhen { false } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt index 5fd9090fd9d..833d927716c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt @@ -215,7 +215,12 @@ class KotlinKarma( versions.webpack4 ) ) - requiredDependencies.add(versions.webpackCli) + requiredDependencies.add( + webpackMajorVersion.choose( + versions.webpackCli, + versions.webpackCli3 + ) + ) requiredDependencies.add(versions.formatUtil) requiredDependencies.add( webpackMajorVersion.choose( 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 dfe148b4982..9094c58a90e 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 @@ -103,7 +103,12 @@ data class KotlinWebpackConfig( versions.webpack4 ) ) - it.add(versions.webpackCli) + it.add( + webpackMajorVersion.choose( + versions.webpackCli, + versions.webpackCli3 + ) + ) it.add(versions.formatUtil) if (bundleAnalyzerReportDir != null) { @@ -120,7 +125,12 @@ data class KotlinWebpackConfig( } if (devServer != null) { - it.add(versions.webpackDevServer) + it.add( + webpackMajorVersion.choose( + versions.webpackDevServer, + versions.webpackDevServer3 + ) + ) } if (!cssSupport.enabled || cssSupport.rules.isEmpty()) return@also @@ -153,14 +163,11 @@ data class KotlinWebpackConfig( @Suppress("unused") data class DevServer( - val inline: Boolean = true, - val lazy: Boolean = false, - val noInfo: Boolean = true, - val open: Any = true, - val overlay: Any = false, - val port: Int? = null, - val proxy: Map? = null, - val contentBase: List + var open: Any = true, + var port: Int? = null, + var proxy: MutableMap? = null, + var static: MutableList? = null, + var contentBase: MutableList? = null ) : Serializable fun save(configFile: File) {