diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-03-17 17:29:12 +0100 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-04-05 13:46:33 +0200 |
| commit | 6d67cabc6fd3d59982a9501fad08b8e06a2e2d5b (patch) | |
| tree | 95b8863ab840bd0e51a5d24b69f6ecaee5945096 | |
| parent | 8ca917ec9b0dd129729c527da77e2eb0ea3abf58 (diff) | |
build(web/ui): Add Gradle integration with Next.js project
This change adds support for building the OpenDC web interface project
that uses Next.js using Gradle. This enables a single build pipeline
using Gradle.
| -rw-r--r-- | buildSrc/build.gradle.kts | 2 | ||||
| -rw-r--r-- | gradle/libs.versions.toml | 2 | ||||
| -rw-r--r-- | opendc-web/opendc-web-ui/build.gradle.kts | 61 | ||||
| -rw-r--r-- | opendc-web/opendc-web-ui/next.config.js | 1 | ||||
| -rw-r--r-- | opendc-web/opendc-web-ui/package.json | 3 |
5 files changed, 68 insertions, 1 deletions
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index d62ade8c..dfe89d2e 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -41,4 +41,6 @@ dependencies { implementation(libs.jandex.gradle) implementation(libs.quarkus.gradle) + + implementation(libs.gradle.node) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 24d96b5a..5aee60fd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,6 +4,7 @@ clikt = "3.4.0" config = "1.4.2" commons-math3 = "3.6.1" dokka = "1.6.10" +gradle-node = "3.2.1" hadoop = "3.3.1" jackson = "2.13.2" jandex-gradle = "0.11.0" @@ -103,6 +104,7 @@ microprofile-openapi-api = { module = "org.eclipse.microprofile.openapi:micropro # Other (Build) dokka-gradle = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "dokka" } +gradle-node = { module = "com.github.node-gradle:gradle-node-plugin", version.ref = "gradle-node" } jandex-gradle = { module = "org.kordamp.gradle:jandex-gradle-plugin", version.ref = "jandex-gradle" } ktlint-gradle = { module = "org.jlleitschuh.gradle:ktlint-gradle", version.ref = "ktlint-gradle" } jmh-gradle = { module = "me.champeau.jmh:jmh-gradle-plugin", version.ref = "jmh-gradle" } diff --git a/opendc-web/opendc-web-ui/build.gradle.kts b/opendc-web/opendc-web-ui/build.gradle.kts index 7edfd134..9063d0e3 100644 --- a/opendc-web/opendc-web-ui/build.gradle.kts +++ b/opendc-web/opendc-web-ui/build.gradle.kts @@ -19,3 +19,64 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ + +import com.github.gradle.node.yarn.task.YarnTask + +description = "Web interface for OpenDC" + +plugins { + java + id("com.github.node-gradle.node") +} + +val lintTask = tasks.register<YarnTask>("lintNext") { + args.set(listOf("lint")) + dependsOn(tasks.yarn) + inputs.dir("src") + inputs.files("package.json", "next.config.js", ".eslintrc") + outputs.upToDateWhen { true } +} + +val buildTask = tasks.register<YarnTask>("buildNext") { + args.set(listOf("build")) + dependsOn(tasks.yarn) + inputs.dir(project.fileTree("src")) + inputs.dir("node_modules") + inputs.files("package.json", "next.config.js") + outputs.dir("${project.buildDir}/build") +} + +tasks.register<YarnTask>("dev") { + args.set(listOf("dev")) + dependsOn(tasks.yarn) + inputs.dir(project.fileTree("src")) + inputs.dir("node_modules") + inputs.files("package.json", "next.config.js") + outputs.upToDateWhen { true } +} + +tasks.register<YarnTask>("start") { + args.set(listOf("start")) + dependsOn(buildTask) + inputs.dir(project.fileTree("src")) + inputs.dir("node_modules") + inputs.files("package.json", "next.config.js") + outputs.upToDateWhen { true } +} + +sourceSets { + java { + main { + java.srcDir("src") + resources.srcDir("public") + } + + test { + java.srcDir("test") + } + } +} + +tasks.test { + dependsOn(lintTask) +} diff --git a/opendc-web/opendc-web-ui/next.config.js b/opendc-web/opendc-web-ui/next.config.js index ceb0900e..59341b1f 100644 --- a/opendc-web/opendc-web-ui/next.config.js +++ b/opendc-web/opendc-web-ui/next.config.js @@ -30,6 +30,7 @@ module.exports = withConfig({ experimental: { eslint: true }, + distDir: 'build/next', async redirects() { return [ { diff --git a/opendc-web/opendc-web-ui/package.json b/opendc-web/opendc-web-ui/package.json index 1a4552bf..816c0177 100644 --- a/opendc-web/opendc-web-ui/package.json +++ b/opendc-web/opendc-web-ui/package.json @@ -69,9 +69,10 @@ "format": "prettier --write src", "precommit": "lint-staged", "dev": "next dev", + "lint": "next lint", "build": "next build", "start": "next start", - "export": "next export -o build" + "export": "next export -o build/export" }, "browserslist": { "production": [ |
