Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CfW: Prevent UnpackSkikoWasmRuntime task execution when it's not needed #4824

Merged
merged 4 commits into from
May 17, 2024

Conversation

eymar
Copy link
Collaborator

@eymar eymar commented May 17, 2024

Fixes: #4823

In #4796 we intentionally started to configure the web app for all k/js and k/wasm targets. The configuration involves adding a dependency on skiko-wasm runtime and unpacking it.
Some projects don't need skiko-wasm-runtime (like those based on compose.html or just compose.runtime).

Solution:
We check if there is a dependency on org.jetbrains.compose.ui libraries (including transitive dependencies). If we find it, then we enable skikoUnpack task. Otherwise it's disabled.

Testing

  • Build the gradle plugin locally (with this change)
  • Used it in our html landing example: https://github.com/JetBrains/compose-multiplatform/blob/master/examples/html/landing
  • Run ./gradlew jsBrowserDistribution, check .../compose-multiplatform/examples/html/landing/build/dist/js/productionExecutable and see NO skiko.* files added there
  • Then add implementation(compose.foundation) dependency in build.gradle.jts and run ./gradlew clean jsBrowserDistribution again - the build/dist contains skiko.* now

@eymar eymar requested review from igordmn and Schahen May 17, 2024 06:04
@eymar eymar changed the title CfW: Add an opt-out from UnpackSkikoWasmRuntime by setting a gradle property CfW: Prevent UnpackSkikoWasmRuntime task execution when it's not needed May 17, 2024
@eymar eymar requested a review from terrakok May 17, 2024 11:15
Comment on lines 31 to 41
project.configurations.matching {
val isWasmOrJs = it.name.contains("js", true) ||
it.name.contains("wasm", true)

it.isCanBeResolved && isWasmOrJs
}.all {
val match = it.incoming.artifacts.resolvedArtifacts.get().any {
it.id.componentIdentifier.toString().contains("org.jetbrains.compose.ui")
}

dependsOnComposeUi = dependsOnComposeUi || match
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd ask use explicit parameters instead of 'it'

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@eymar eymar merged commit 30164c5 into master May 17, 2024
12 checks passed
@eymar eymar deleted the ok/allow_skiko_unpack_skipping_for_web branch May 17, 2024 12:54
eymar added a commit that referenced this pull request May 17, 2024
…ed (#4824)

Fixes: #4823

In #4796 we
intentionally started to configure the web app for all k/js and k/wasm
targets. The configuration involves adding a dependency on skiko-wasm
runtime and unpacking it.
Some projects don't need skiko-wasm-runtime (like those based on
compose.html or just compose.runtime).

**Solution:**
We check if there is a dependency on org.jetbrains.compose.ui libraries
(including transitive dependencies). If we find it, then we enable
skikoUnpack task. Otherwise it's disabled.

## Testing
- Build the gradle plugin locally (with this change)
- Used it in our html landing example:
https://github.com/JetBrains/compose-multiplatform/blob/master/examples/html/landing
- Run `./gradlew jsBrowserDistribution`, check
`.../compose-multiplatform/examples/html/landing/build/dist/js/productionExecutable`
and see NO skiko.* files added there
- Then add `implementation(compose.foundation)` dependency in
build.gradle.jts and run `./gradlew clean jsBrowserDistribution` again -
the build/dist contains skiko.* now

(cherry picked from commit 30164c5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Request for opting out of generating skiko wasm / js resources in latest compose plugin (1.6.10-rc03)
3 participants