Skip to content

Commit 61d9520

Browse files
committed
Separate task for Vite default config
1 parent 2de095b commit 61d9520

5 files changed

Lines changed: 48 additions & 24 deletions

File tree

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class BundlerConfiguration(
4343
compileSyncTask = "${platform.name}DevelopmentExecutableCompileSync",
4444
)
4545

46+
val defaultConfigTask = "${platform.name}${suffix}DefaultConfig"
4647
val runTask: String = "${platform.name}${suffix}Dev"
4748
}
4849

kfc/kfc-gradle-plugin/src/main/kotlin/io/github/turansky/kfc/gradle/plugin/ViteConfig.kt renamed to kfc/kfc-gradle-plugin/src/main/kotlin/io/github/turansky/kfc/gradle/plugin/DefaultViteConfig.kt

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22

33
package io.github.turansky.kfc.gradle.plugin
44

5-
import org.gradle.api.Task
6-
import java.io.File
7-
85
internal const val ENTRY_PATH: String = "ENTRY_PATH"
96

107
// language=javascript
11-
private val DEFAULT_VITE_CONFIG: String = """
8+
internal val DEFAULT_VITE_CONFIG: String = """
129
import { cwd } from 'node:process'
1310
import {defineConfig, loadEnv} from 'vite'
1411
@@ -28,9 +25,3 @@ export default defineConfig(({mode}) => {
2825
}
2926
})
3027
""".trimIndent()
31-
32-
fun Task.defaultViteConfig(): File {
33-
val file = temporaryDir.resolve(Vite.CONFIG_FILE)
34-
file.writeText(DEFAULT_VITE_CONFIG)
35-
return file
36-
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.github.turansky.kfc.gradle.plugin
2+
3+
import org.gradle.api.DefaultTask
4+
import org.gradle.api.file.RegularFileProperty
5+
import org.gradle.api.model.ObjectFactory
6+
import org.gradle.api.tasks.OutputFile
7+
import org.gradle.api.tasks.TaskAction
8+
import org.gradle.work.DisableCachingByDefault
9+
import javax.inject.Inject
10+
11+
@DisableCachingByDefault
12+
abstract class KotlinViteDefaultConfigTask :
13+
DefaultTask() {
14+
15+
@get:Inject
16+
protected abstract val objectFactory: ObjectFactory
17+
18+
private val defaultOutputFile: RegularFileProperty =
19+
objectFactory.fileProperty()
20+
.fileValue(temporaryDir.resolve(Vite.CONFIG_FILE))
21+
22+
@get:OutputFile
23+
val configFile: RegularFileProperty =
24+
objectFactory.fileProperty()
25+
.convention(defaultOutputFile)
26+
27+
@TaskAction
28+
protected fun create() {
29+
configFile.asFile.get().writeText(DEFAULT_VITE_CONFIG)
30+
}
31+
}

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

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import org.gradle.api.file.*
44
import org.gradle.api.model.ObjectFactory
55
import org.gradle.api.provider.ListProperty
66
import org.gradle.api.provider.Provider
7-
import org.gradle.api.tasks.CacheableTask
8-
import org.gradle.api.tasks.TaskAction
7+
import org.gradle.api.tasks.*
98
import org.gradle.kotlin.dsl.listProperty
109
import javax.inject.Inject
1110

@@ -35,21 +34,15 @@ abstract class KotlinVitePrepareTask :
3534
private val workingDirectory: Provider<Directory> =
3635
npmProject.dir
3736

38-
private val defaultConfigFile: RegularFileProperty =
39-
objectFactory.fileProperty()
40-
.convention(::defaultViteConfig)
37+
@get:InputFile
38+
@get:PathSensitive(PathSensitivity.RELATIVE)
39+
abstract val defaultConfigFile: RegularFileProperty
4140

42-
private val customConfigFile: RegularFileProperty =
41+
private val configFile: Provider<RegularFile> =
4342
objectFactory.fileProperty()
4443
.convention(projectDir.file("vite/${Vite.CONFIG_FILE}"))
45-
46-
private val configFile: RegularFileProperty
47-
get() = objectFactory.fileProperty()
48-
.convention(
49-
customConfigFile
50-
.filter { it.asFile.exists() }
51-
.orElse(defaultConfigFile)
52-
)
44+
.filter { it.asFile.exists() }
45+
.orElse(defaultConfigFile)
5346

5447
private val entryFile: Provider<RegularFile> =
5548
workingDirectory.map { it.file("kotlin/${project.jsModuleName}.mjs") }

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import io.github.turansky.kfc.gradle.plugin.BuildMode.APPLICATION
44
import org.gradle.api.Plugin
55
import org.gradle.api.Project
66
import org.gradle.api.Task
7+
import org.gradle.kotlin.dsl.getValue
8+
import org.gradle.kotlin.dsl.provideDelegate
79
import org.gradle.kotlin.dsl.register
810

911
class ViteApplicationPlugin : Plugin<Project> {
@@ -22,14 +24,20 @@ class ViteApplicationPlugin : Plugin<Project> {
2224
private fun Project.addBundlerTasks(
2325
configuration: BundlerConfiguration,
2426
) {
27+
val defaultConfig by tasks.register<KotlinViteDefaultConfigTask>(configuration.defaultConfigTask) {
28+
group = DEFAULT_TASK_GROUP
29+
}
30+
2531
tasks.register<KotlinVitePrepareTask>(configuration.production.prepareTask) {
2632
group = DEFAULT_TASK_GROUP
33+
defaultConfigFile.set(defaultConfig.configFile)
2734

2835
dependsOn(configuration.production.compileSyncTask)
2936
}
3037

3138
tasks.register<KotlinVitePrepareTask>(configuration.development.prepareTask) {
3239
group = DEFAULT_TASK_GROUP
40+
defaultConfigFile.set(defaultConfig.configFile)
3341

3442
dependsOn(configuration.development.compileSyncTask)
3543
}

0 commit comments

Comments
 (0)