@@ -8,12 +8,6 @@ import org.gradle.api.tasks.*
88import org.gradle.kotlin.dsl.listProperty
99import javax.inject.Inject
1010
11- private val DOT_ENV_FILES = setOf (
12- DOT_ENV ,
13- DOT_ENV_PRODUCTION ,
14- DOT_ENV_DEVELOPMENT ,
15- )
16-
1711@CacheableTask
1812abstract class KotlinVitePrepareTask :
1913 KotlinViteTaskBase () {
@@ -34,13 +28,20 @@ abstract class KotlinVitePrepareTask :
3428 private val workingDirectory: Provider <Directory > =
3529 npmProject.dir
3630
31+ @get:InputDirectory
32+ private val viteConfigDirectory: DirectoryProperty =
33+ objectFactory.directoryProperty()
34+ .convention(projectDir.dir(" vite" ))
35+
3736 @get:InputFile
3837 @get:PathSensitive(PathSensitivity .RELATIVE )
3938 abstract val defaultConfigFile: RegularFileProperty
4039
40+ @get:InputFile
41+ @get:PathSensitive(PathSensitivity .RELATIVE )
4142 private val configFile: Provider <RegularFile > =
4243 objectFactory.fileProperty()
43- .convention(projectDir .file(" vite/ ${ Vite .CONFIG_FILE } " ))
44+ .convention(viteConfigDirectory .file(Vite .CONFIG_FILE ))
4445 .filter { it.asFile.exists() }
4546 .orElse(defaultConfigFile)
4647
@@ -60,12 +61,37 @@ abstract class KotlinVitePrepareTask :
6061 fs.syncFile(configFile, workingDirectory)
6162 fs.syncFile(envFile, workingDirectory)
6263
63- for (fileName in DOT_ENV_FILES ) {
64+ val additionalFiles = buildSet<String > {
65+ addAll(getViteConfigFiles(viteConfigDirectory))
66+ addAll(getViteConfigFiles(workingDirectory))
67+
68+ remove(configFile.get().asFile.name)
69+ remove(envFile.get().asFile.name)
70+ }
71+
72+ for (fileName in additionalFiles) {
6473 fs.syncFile(
65- source = projectDir .file(" vite/ $ fileName" ),
74+ source = viteConfigDirectory .file(fileName),
6675 destination = workingDirectory,
6776 strategy = SyncFileStrategy .OPTIONAL_SOURCE ,
6877 )
6978 }
7079 }
7180}
81+
82+ private val EXCLUDED_FILES = setOf (
83+ " package.json" ,
84+ " karma.conf.js" ,
85+ )
86+
87+ private fun getViteConfigFiles (
88+ directory : Provider <Directory >
89+ ): List <String > {
90+ val allFiles = directory.get().asFile
91+ .listFiles { file -> file.isFile }
92+ ? : return emptyList()
93+
94+ return allFiles
95+ .map { it.name }
96+ .filter { it !in EXCLUDED_FILES }
97+ }
0 commit comments