Browse Source
Since 1.6.10 Compose for Web goes to Alpha and experimental configuration is not needed anymore. We'll configure the web targets by default when they're added to projects. ## Testing - I built the plugin to mavenLocal. And used it in a couple of our samples. - After gradle sync completes, I observe the Deprecation warning in build.gradle.kts on `compose.experimental.web` usages (see a screenshot below) <img width="1022" alt="Screenshot 2024-05-10 at 15 41 14" src="https://github.com/JetBrains/compose-multiplatform/assets/7372778/e8ede073-8d34-4dd7-ae74-c83ca0ff5c96"> Then I remove deprecated API usages and test that the project works without it: - run `./gradlew clean` just in case - run the app: `./gradlew wasmJsBrowserRun` and `./gradlew jsBrowserRun` - both run fine - build the production distribution: `./gradlew wasmJsBrowserDistribution` - `cd ..../build/dist/wasmJs/productionExecutable` and run `python -m http.server`, open a browser at `http://localhost:8000` - the app should work the same way it works with gradle tasks above <!-- Optional --> This should be tested by QA ## Release Notes ### Highlights - Web - Compose for Web goes to Alpha! Some experimental Compose Multiplatform Gradle plugin APIs for web app configuration were deprecated. Their usage is not required anymore.pull/4819/head
Oleksandr Karpovich
6 months ago
committed by
GitHub
10 changed files with 104 additions and 75 deletions
@ -1,24 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. |
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
|
||||||
*/ |
|
||||||
|
|
||||||
package org.jetbrains.compose.experimental.internal |
|
||||||
|
|
||||||
import org.gradle.api.Project |
|
||||||
import org.jetbrains.compose.ComposeExtension |
|
||||||
import org.jetbrains.compose.experimental.dsl.ExperimentalExtension |
|
||||||
import org.jetbrains.compose.experimental.web.internal.configureExperimentalWebApplication |
|
||||||
import org.jetbrains.compose.web.WebExtension |
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension |
|
||||||
|
|
||||||
internal fun Project.configureExperimental( |
|
||||||
composeExt: ComposeExtension, |
|
||||||
experimentalExt: ExperimentalExtension |
|
||||||
) { |
|
||||||
if (experimentalExt.web._isApplicationInitialized) { |
|
||||||
val webExt = composeExt.extensions.getByType(WebExtension::class.java) |
|
||||||
webExt.targetsToConfigure(project) |
|
||||||
.configureExperimentalWebApplication(project, experimentalExt.web.application) |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,10 @@ |
|||||||
|
package org.jetbrains.compose.web.dsl |
||||||
|
|
||||||
|
import javax.inject.Inject |
||||||
|
|
||||||
|
abstract class WebApplication @Inject constructor( |
||||||
|
@Suppress("unused") |
||||||
|
val name: String, |
||||||
|
) { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,50 @@ |
|||||||
|
/* |
||||||
|
* Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers. |
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.jetbrains.compose.web.tasks |
||||||
|
|
||||||
|
import org.gradle.api.DefaultTask |
||||||
|
import org.gradle.api.file.ArchiveOperations |
||||||
|
import org.gradle.api.file.DirectoryProperty |
||||||
|
import org.gradle.api.file.FileCollection |
||||||
|
import org.gradle.api.file.FileSystemOperations |
||||||
|
import org.gradle.api.tasks.InputFiles |
||||||
|
import org.gradle.api.tasks.OutputDirectory |
||||||
|
import org.gradle.api.tasks.TaskAction |
||||||
|
import org.jetbrains.compose.internal.utils.clearDirs |
||||||
|
import java.io.File |
||||||
|
import javax.inject.Inject |
||||||
|
|
||||||
|
abstract class UnpackSkikoWasmRuntimeTask : DefaultTask() { |
||||||
|
@get:InputFiles |
||||||
|
lateinit var skikoRuntimeFiles: FileCollection |
||||||
|
|
||||||
|
@get:OutputDirectory |
||||||
|
abstract val outputDir: DirectoryProperty |
||||||
|
|
||||||
|
@get:Inject |
||||||
|
internal abstract val archiveOperations: ArchiveOperations |
||||||
|
|
||||||
|
@get:Inject |
||||||
|
internal abstract val fileOperations: FileSystemOperations |
||||||
|
|
||||||
|
@TaskAction |
||||||
|
fun run() { |
||||||
|
fileOperations.clearDirs(outputDir) |
||||||
|
|
||||||
|
for (file in skikoRuntimeFiles.files) { |
||||||
|
if (file.name.endsWith(".jar", ignoreCase = true)) { |
||||||
|
unpackJar(file) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private fun unpackJar(file: File) { |
||||||
|
fileOperations.copy { copySpec -> |
||||||
|
copySpec.from(archiveOperations.zipTree(file)) |
||||||
|
copySpec.into(outputDir) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue