diff options
Diffstat (limited to 'subprojects/frontend/build.gradle.kts')
-rw-r--r-- | subprojects/frontend/build.gradle.kts | 75 |
1 files changed, 41 insertions, 34 deletions
diff --git a/subprojects/frontend/build.gradle.kts b/subprojects/frontend/build.gradle.kts index 4a51c74e..8d2a8631 100644 --- a/subprojects/frontend/build.gradle.kts +++ b/subprojects/frontend/build.gradle.kts | |||
@@ -18,15 +18,45 @@ val productionAssets: Configuration by configurations.creating { | |||
18 | isCanBeResolved = false | 18 | isCanBeResolved = false |
19 | } | 19 | } |
20 | 20 | ||
21 | val sourcesWithoutTypeGen = fileTree("src") { | 21 | val sourcesWithoutTypes = fileTree("src") { |
22 | exclude("**/*.typegen.ts") | 22 | exclude("**/*.typegen.ts") |
23 | } | 23 | } |
24 | 24 | ||
25 | val sourcesWithTypes = fileTree("src") + fileTree("types") | ||
26 | |||
27 | val buildScripts = fileTree("config") + files( | ||
28 | ".eslintrc.cjs", | ||
29 | "prettier.config.cjs", | ||
30 | "vite.config.ts", | ||
31 | ) | ||
32 | |||
33 | val installationState = files( | ||
34 | rootProject.file("yarn.lock"), | ||
35 | rootProject.file("package.json"), | ||
36 | "package.json", | ||
37 | ) | ||
38 | |||
39 | val sharedConfigFiles = installationState + files( | ||
40 | "tsconfig.json", | ||
41 | "tsconfig.base.json", | ||
42 | "tsconfig.node.json", | ||
43 | "tsconfig.shared.json", | ||
44 | ) | ||
45 | |||
46 | val assembleConfigFiles = sharedConfigFiles + file("vite.config.ts") + fileTree("config") { | ||
47 | include("**/*.ts") | ||
48 | } | ||
49 | |||
50 | val assembleSources = sourcesWithTypes + fileTree("public") + file("index.html") | ||
51 | |||
52 | val assembleFiles = assembleSources + assembleConfigFiles | ||
53 | |||
54 | val lintingFiles = sourcesWithTypes + buildScripts + sharedConfigFiles | ||
55 | |||
25 | val generateXStateTypes by tasks.registering(RunYarn::class) { | 56 | val generateXStateTypes by tasks.registering(RunYarn::class) { |
26 | dependsOn(tasks.installFrontend) | 57 | dependsOn(tasks.installFrontend) |
27 | inputs.files(sourcesWithoutTypeGen) | 58 | inputs.files(sourcesWithoutTypes) |
28 | inputs.file("package.json") | 59 | inputs.files(installationState) |
29 | inputs.file(rootProject.file("yarn.lock")) | ||
30 | outputs.dir("src") | 60 | outputs.dir("src") |
31 | script.set("run typegen") | 61 | script.set("run typegen") |
32 | description = "Generate TypeScript typings for XState state machines." | 62 | description = "Generate TypeScript typings for XState state machines." |
@@ -34,11 +64,7 @@ val generateXStateTypes by tasks.registering(RunYarn::class) { | |||
34 | 64 | ||
35 | tasks.assembleFrontend { | 65 | tasks.assembleFrontend { |
36 | dependsOn(generateXStateTypes) | 66 | dependsOn(generateXStateTypes) |
37 | inputs.dir("public") | 67 | inputs.files(assembleFiles) |
38 | inputs.files(sourcesWithoutTypeGen) | ||
39 | inputs.file("index.html") | ||
40 | inputs.files("package.json", "tsconfig.json", "tsconfig.base.json", "vite.config.ts") | ||
41 | inputs.file(rootProject.file("yarn.lock")) | ||
42 | outputs.dir(productionResources) | 68 | outputs.dir(productionResources) |
43 | } | 69 | } |
44 | 70 | ||
@@ -51,10 +77,7 @@ artifacts { | |||
51 | val typeCheckFrontend by tasks.registering(RunYarn::class) { | 77 | val typeCheckFrontend by tasks.registering(RunYarn::class) { |
52 | dependsOn(tasks.installFrontend) | 78 | dependsOn(tasks.installFrontend) |
53 | dependsOn(generateXStateTypes) | 79 | dependsOn(generateXStateTypes) |
54 | inputs.dir("src") | 80 | inputs.files(lintingFiles) |
55 | inputs.dir("types") | ||
56 | inputs.files("package.json", "tsconfig.json", "tsconfig.base.json", "tsconfig.node.json") | ||
57 | inputs.file(rootProject.file("yarn.lock")) | ||
58 | outputs.dir("$buildDir/typescript") | 81 | outputs.dir("$buildDir/typescript") |
59 | script.set("run typecheck") | 82 | script.set("run typecheck") |
60 | group = "verification" | 83 | group = "verification" |
@@ -65,17 +88,9 @@ val lintFrontend by tasks.registering(RunYarn::class) { | |||
65 | dependsOn(tasks.installFrontend) | 88 | dependsOn(tasks.installFrontend) |
66 | dependsOn(generateXStateTypes) | 89 | dependsOn(generateXStateTypes) |
67 | dependsOn(typeCheckFrontend) | 90 | dependsOn(typeCheckFrontend) |
68 | inputs.dir("src") | 91 | inputs.files(lintingFiles) |
69 | inputs.dir("types") | 92 | outputs.file("$buildDir/eslint.json") |
70 | inputs.files(".eslintrc.cjs", "prettier.config.cjs") | 93 | script.set("run lint") |
71 | inputs.files("package.json", "tsconfig.json", "tsconfig.base.json", "tsconfig.node.json") | ||
72 | inputs.file(rootProject.file("yarn.lock")) | ||
73 | if (project.hasProperty("ci")) { | ||
74 | outputs.file("$buildDir/eslint.json") | ||
75 | script.set("run lint:ci") | ||
76 | } else { | ||
77 | script.set("run lint") | ||
78 | } | ||
79 | group = "verification" | 94 | group = "verification" |
80 | description = "Check for TypeScript lint errors and warnings." | 95 | description = "Check for TypeScript lint errors and warnings." |
81 | } | 96 | } |
@@ -84,11 +99,7 @@ val fixFrontend by tasks.registering(RunYarn::class) { | |||
84 | dependsOn(tasks.installFrontend) | 99 | dependsOn(tasks.installFrontend) |
85 | dependsOn(generateXStateTypes) | 100 | dependsOn(generateXStateTypes) |
86 | dependsOn(typeCheckFrontend) | 101 | dependsOn(typeCheckFrontend) |
87 | inputs.dir("src") | 102 | inputs.files(lintingFiles) |
88 | inputs.dir("types") | ||
89 | inputs.files(".eslintrc.cjs", "prettier.config.cjs") | ||
90 | inputs.files("package.json", "tsconfig.json", "tsconfig.base.json", "tsconfig.node.json") | ||
91 | inputs.file(rootProject.file("yarn.lock")) | ||
92 | script.set("run lint:fix") | 103 | script.set("run lint:fix") |
93 | group = "verification" | 104 | group = "verification" |
94 | description = "Fix TypeScript lint errors and warnings." | 105 | description = "Fix TypeScript lint errors and warnings." |
@@ -102,11 +113,7 @@ tasks.check { | |||
102 | tasks.register("serveFrontend", RunYarn::class) { | 113 | tasks.register("serveFrontend", RunYarn::class) { |
103 | dependsOn(tasks.installFrontend) | 114 | dependsOn(tasks.installFrontend) |
104 | dependsOn(generateXStateTypes) | 115 | dependsOn(generateXStateTypes) |
105 | inputs.dir("public") | 116 | inputs.files(assembleFiles) |
106 | inputs.files(sourcesWithoutTypeGen) | ||
107 | inputs.file("index.html") | ||
108 | inputs.files("package.json", "tsconfig.json", "tsconfig.base.json", "vite.config.ts") | ||
109 | inputs.file(rootProject.file("yarn.lock")) | ||
110 | outputs.dir("$viteOutputDir/development") | 117 | outputs.dir("$viteOutputDir/development") |
111 | script.set("run serve") | 118 | script.set("run serve") |
112 | group = "run" | 119 | group = "run" |