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