Skip to content

Commit 5bf8fea

Browse files
committed
Bundler. Add bundler configurations
1 parent 6ce5f8d commit 5bf8fea

3 files changed

Lines changed: 42 additions & 37 deletions

File tree

kfc/kfc-gradle-plugin/src/main/kotlin/io/github/turansky/kfc/gradle/plugin/BundlePlugin.kt

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,6 @@ import org.gradle.kotlin.dsl.registering
99

1010
class BundlePlugin : Plugin<Project> {
1111
override fun apply(target: Project): Unit = with(target) {
12-
val jsBundleProduction by tasks.registering(Jar::class) {
13-
group = DEFAULT_TASK_GROUP
14-
15-
archiveClassifier.set("js-bundle-production")
16-
17-
from(tasks.named(Vite.productionTask))
18-
}
19-
20-
val jsBundleDevelopment by tasks.registering(Jar::class) {
21-
group = DEFAULT_TASK_GROUP
22-
23-
archiveClassifier.set("js-bundle-development")
24-
25-
from(tasks.named(Vite.developmentTask))
26-
}
12+
val configuration = Vite.js
2713
}
2814
}
Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,39 @@
11
package io.github.turansky.kfc.gradle.plugin
22

33
sealed class Bundler(
4-
val productionPrepareTask: String,
5-
val developmentPrepareTask: String,
6-
val productionTask: String,
7-
val developmentTask: String,
8-
val configFile: String,
4+
private val bundler: String,
95
) {
10-
val runTask: String = "jsViteDev"
6+
val js: BundlerConfiguration =
7+
BundlerConfiguration(bundler = bundler, platform = "js")
8+
9+
val wasmJs: BundlerConfiguration =
10+
BundlerConfiguration(bundler = bundler, platform = "wasmJs")
11+
}
12+
13+
class BundlerConfiguration(
14+
bundler: String,
15+
platform: String,
16+
) {
17+
val production: BundlerConfigurationTasks =
18+
BundlerConfigurationTasks("${platform}BrowserProduction${bundler}")
19+
20+
val development: BundlerConfigurationTasks =
21+
BundlerConfigurationTasks("${platform}BrowserDevelopment${bundler}")
22+
23+
val runTask: String = "${platform}${bundler}Dev"
1124
}
1225

13-
object Vite : Bundler(
14-
productionPrepareTask = "jsBrowserProductionVitePrepare",
15-
developmentPrepareTask = "jsBrowserDevelopmentVitePrepare",
16-
productionTask = "jsBrowserProductionVite",
17-
developmentTask = "jsBrowserDevelopmentVite",
26+
class BundlerConfigurationTasks(
27+
group: String,
28+
) {
29+
val prepareTask = group + "Prepare"
30+
val buildTask = group
31+
}
32+
33+
object Vite : Bundler("vite") {
34+
1835
// TODO: We need .mjs extension for now to enable connecting pure ESM plugins
1936
// Until Kotlin isn't specifying `type: "module"` in generated `package.json`
2037
// Ticket: https://youtrack.jetbrains.com/issue/KT-72680/KJS.-Specify-type-module-in-generated-package.json
21-
configFile = "vite.config.mjs",
22-
)
38+
val configFile: String = "vite.config.mjs"
39+
}

kfc/kfc-gradle-plugin/src/main/kotlin/io/github/turansky/kfc/gradle/plugin/ViteApplicationPlugin.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,32 +7,34 @@ import org.gradle.kotlin.dsl.register
77

88
class ViteApplicationPlugin : Plugin<Project> {
99
override fun apply(target: Project): Unit = with(target) {
10-
tasks.register<KotlinVitePrepareTask>(Vite.developmentPrepareTask) {
10+
val configuration = Vite.js
11+
12+
tasks.register<KotlinVitePrepareTask>(configuration.development.prepareTask) {
1113
group = DEFAULT_TASK_GROUP
1214

1315
dependsOn("jsDevelopmentExecutableCompileSync")
1416
}
15-
tasks.register<KotlinVitePrepareTask>(Vite.productionPrepareTask) {
17+
tasks.register<KotlinVitePrepareTask>(configuration.production.prepareTask) {
1618
group = DEFAULT_TASK_GROUP
1719

1820
dependsOn("jsProductionExecutableCompileSync")
1921
}
2022

21-
tasks.register<KotlinViteBuildTask>(Vite.productionTask) {
23+
tasks.register<KotlinViteBuildTask>(configuration.production.buildTask) {
2224
group = DEFAULT_TASK_GROUP
2325

24-
dependsOn(Vite.productionPrepareTask)
26+
dependsOn(configuration.production.prepareTask)
2527

2628
mode.set(ViteMode.PRODUCTION)
2729
outputDirectory.convention(getProductionDistDirectory())
2830

2931
dependOnCompile(COMPILE_PRODUCTION)
3032
}
3133

32-
tasks.register<KotlinViteBuildTask>(Vite.developmentTask) {
34+
tasks.register<KotlinViteBuildTask>(configuration.development.buildTask) {
3335
group = DEFAULT_TASK_GROUP
3436

35-
dependsOn(Vite.developmentPrepareTask)
37+
dependsOn(configuration.development.prepareTask)
3638

3739
mode.set(ViteMode.DEVELOPMENT)
3840
outputDirectory.convention(getDevelopmentDistDirectory())
@@ -41,13 +43,13 @@ class ViteApplicationPlugin : Plugin<Project> {
4143
}
4244

4345
tasks.named("build") {
44-
dependsOn(Vite.productionTask)
46+
dependsOn(configuration.production.buildTask)
4547
}
4648

47-
tasks.register<KotlinViteDevTask>(Vite.runTask) {
49+
tasks.register<KotlinViteDevTask>(configuration.runTask) {
4850
group = DEFAULT_TASK_GROUP
4951

50-
dependsOn(Vite.developmentPrepareTask)
52+
dependsOn(configuration.development.prepareTask)
5153

5254
mode.set(ViteMode.DEVELOPMENT)
5355

0 commit comments

Comments
 (0)