[Wasm][Gradle] Enable asyncWebAssembly and topLevelAwait in webpack.
Needed for new async module ESM launchers. Merge-request: KT-MR-5738 Merged-by: Svyatoslav Kuzmich <svyatoslav.kuzmich@jetbrains.com>
This commit is contained in:
committed by
Space
parent
582e8fc9ad
commit
016143328a
+13
@@ -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.KotlinPlatformType
|
||||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
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.plugin.mpp.pm20.archivesName
|
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.archivesName
|
||||||
@@ -28,6 +29,7 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.RequiresNpmDependencies
|
|||||||
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.webpack.KotlinWebpackConfig.Mode
|
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig.Mode
|
||||||
import org.jetbrains.kotlin.gradle.testing.internal.reportsDir
|
import org.jetbrains.kotlin.gradle.testing.internal.reportsDir
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.getValue
|
||||||
import org.jetbrains.kotlin.gradle.utils.injected
|
import org.jetbrains.kotlin.gradle.utils.injected
|
||||||
import org.jetbrains.kotlin.gradle.utils.property
|
import org.jetbrains.kotlin.gradle.utils.property
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -218,6 +220,10 @@ constructor(
|
|||||||
private val webpackConfigAppliers: MutableList<(KotlinWebpackConfig) -> Unit> =
|
private val webpackConfigAppliers: MutableList<(KotlinWebpackConfig) -> Unit> =
|
||||||
mutableListOf()
|
mutableListOf()
|
||||||
|
|
||||||
|
private val platformType by project.provider {
|
||||||
|
compilation.platformType
|
||||||
|
}
|
||||||
|
|
||||||
private fun createRunner(): KotlinWebpackRunner {
|
private fun createRunner(): KotlinWebpackRunner {
|
||||||
val config = KotlinWebpackConfig(
|
val config = KotlinWebpackConfig(
|
||||||
mode = mode,
|
mode = mode,
|
||||||
@@ -236,6 +242,13 @@ constructor(
|
|||||||
webpackMajorVersion = webpackMajorVersion
|
webpackMajorVersion = webpackMajorVersion
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (platformType == KotlinPlatformType.wasm) {
|
||||||
|
config.experiments += listOf(
|
||||||
|
"asyncWebAssembly",
|
||||||
|
"topLevelAwait"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
webpackConfigAppliers
|
webpackConfigAppliers
|
||||||
.forEach { it(config) }
|
.forEach { it(config) }
|
||||||
|
|
||||||
|
|||||||
+13
@@ -48,6 +48,8 @@ data class KotlinWebpackConfig(
|
|||||||
@Input
|
@Input
|
||||||
@Optional
|
@Optional
|
||||||
var devServer: DevServer? = null,
|
var devServer: DevServer? = null,
|
||||||
|
@Input
|
||||||
|
var experiments: MutableSet<String> = mutableSetOf(),
|
||||||
@Nested
|
@Nested
|
||||||
var cssSupport: KotlinWebpackCssSupport = KotlinWebpackCssSupport(),
|
var cssSupport: KotlinWebpackCssSupport = KotlinWebpackCssSupport(),
|
||||||
@Input
|
@Input
|
||||||
@@ -207,6 +209,7 @@ data class KotlinWebpackConfig(
|
|||||||
appendErrorPlugin()
|
appendErrorPlugin()
|
||||||
appendFromConfigDir()
|
appendFromConfigDir()
|
||||||
appendEvaluatedFileReport()
|
appendEvaluatedFileReport()
|
||||||
|
appendExperiments()
|
||||||
|
|
||||||
if (export) {
|
if (export) {
|
||||||
//language=JavaScript 1.8
|
//language=JavaScript 1.8
|
||||||
@@ -277,6 +280,16 @@ data class KotlinWebpackConfig(
|
|||||||
appendLine()
|
appendLine()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Appendable.appendExperiments() {
|
||||||
|
if (experiments.isEmpty()) return
|
||||||
|
|
||||||
|
appendLine("config.experiments = {")
|
||||||
|
for (experiment in experiments.sorted()) {
|
||||||
|
appendLine(" $experiment: true,")
|
||||||
|
}
|
||||||
|
appendLine("}")
|
||||||
|
}
|
||||||
|
|
||||||
private fun Appendable.appendSourceMaps() {
|
private fun Appendable.appendSourceMaps() {
|
||||||
if (!sourceMaps) return
|
if (!sourceMaps) return
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user