@@ -30,6 +30,12 @@ repositories {
3030 }
3131}
3232
33+ sourceSets {
34+ main {
35+ resources.srcDir(layout.buildDirectory.dir(" generated/frontend-resources" ))
36+ }
37+ }
38+
3339dependencies {
3440 implementation(" org.projectlombok:lombok:1.18.46" )
3541 annotationProcessor(" org.projectlombok:lombok:1.18.46" )
@@ -46,17 +52,41 @@ dependencies {
4652 implementation(" commons-io:commons-io:2.22.0" )
4753}
4854
55+ val frontendDir = layout.projectDirectory.dir(" src/main/frontend" )
56+ val frontendOutputDir = layout.buildDirectory.dir(" generated/frontend-resources/httpd/app" )
57+
58+ tasks.register<Exec >(" bunInstallFrontend" ) {
59+ workingDir = frontendDir.asFile
60+ commandLine(" bun" , " install" , " --frozen-lockfile" )
61+ inputs.files(
62+ frontendDir.file(" package.json" ),
63+ frontendDir.file(" bun.lock" )
64+ )
65+ outputs.dir(frontendDir.dir(" node_modules" ))
66+ }
67+
68+ tasks.register<Exec >(" buildFrontend" ) {
69+ workingDir = frontendDir.asFile
70+ commandLine(" bun" , " run" , " build" )
71+ dependsOn(" bunInstallFrontend" )
72+ inputs.dir(frontendDir.dir(" src" ))
73+ inputs.files(
74+ frontendDir.file(" index.html" ),
75+ frontendDir.file(" vite.config.ts" ),
76+ frontendDir.file(" svelte.config.js" ),
77+ frontendDir.file(" tsconfig.json" ),
78+ frontendDir.file(" tsconfig.node.json" ),
79+ frontendDir.file(" components.json" ),
80+ frontendDir.file(" package.json" ),
81+ frontendDir.file(" bun.lock" )
82+ )
83+ outputs.dir(frontendOutputDir)
84+ }
85+
4986tasks.getByName<Jar >(" jar" ) {
5087 duplicatesStrategy = DuplicatesStrategy .EXCLUDE
5188 archiveBaseName.set(" Module-HTTPD" )
5289 archiveVersion.set(" " )
53- from(" src/main/resources" ) {
54- exclude(" dev/**" )
55- exclude(" httpd/assets/textures/**" )
56- exclude(" httpd/assets/models/**" )
57- exclude(" httpd/assets/items/**" )
58- exclude(" httpd/assets/.minecraft-version" )
59- }
6090}
6191
6292java {
@@ -71,11 +101,10 @@ tasks {
71101 options.encoding = Charsets .UTF_8 .name()
72102 }
73103 processResources {
104+ dependsOn(" buildFrontend" )
74105 filteringCharset = Charsets .UTF_8 .name()
75- exclude(" httpd/assets/textures/**" )
76- exclude(" httpd/assets/models/**" )
77- exclude(" httpd/assets/items/**" )
78- exclude(" httpd/assets/.minecraft-version" )
106+ exclude(" dev/**" )
107+ exclude(" httpd/assets/**" )
79108 }
80109}
81110
0 commit comments