aboutsummaryrefslogtreecommitdiff
path: root/dokka-subprojects/plugin-base-frontend/build.gradle.kts
diff options
context:
space:
mode:
Diffstat (limited to 'dokka-subprojects/plugin-base-frontend/build.gradle.kts')
-rw-r--r--dokka-subprojects/plugin-base-frontend/build.gradle.kts52
1 files changed, 52 insertions, 0 deletions
diff --git a/dokka-subprojects/plugin-base-frontend/build.gradle.kts b/dokka-subprojects/plugin-base-frontend/build.gradle.kts
new file mode 100644
index 00000000..459d748c
--- /dev/null
+++ b/dokka-subprojects/plugin-base-frontend/build.gradle.kts
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
+ */
+
+import com.github.gradle.node.npm.task.NpmTask
+import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs
+
+@Suppress("DSL_SCOPE_VIOLATION") // fixed in Gradle 8.1 https://github.com/gradle/gradle/pull/23639
+plugins {
+ id("dokkabuild.setup-html-frontend-files")
+ alias(libs.plugins.gradleNode)
+}
+
+node {
+ version.set(libs.versions.node)
+
+ // https://github.com/node-gradle/gradle-node-plugin/blob/3.5.1/docs/faq.md#is-this-plugin-compatible-with-centralized-repositories-declaration
+ download.set(true)
+ distBaseUrl.set(null as String?) // Strange cast to avoid overload ambiguity
+}
+
+val distributionDirectory = layout.projectDirectory.dir("dist")
+
+val npmRunBuild by tasks.registering(NpmTask::class) {
+ dependsOn(tasks.npmInstall)
+
+ npmCommand.set(parseSpaceSeparatedArgs("run build"))
+
+ inputs.dir("src/main")
+ inputs.files(
+ "package.json",
+ "webpack.config.js",
+ )
+
+ outputs.dir(distributionDirectory)
+ outputs.cacheIf { true }
+}
+
+configurations.dokkaHtmlFrontendFilesElements.configure {
+ outgoing {
+ artifact(distributionDirectory) {
+ builtBy(npmRunBuild)
+ }
+ }
+}
+
+tasks.clean {
+ delete(
+ file("node_modules"),
+ file("dist"),
+ )
+}