Reuben Firmin
11/28/2023, 5:05 PMReuben Firmin
11/28/2023, 5:05 PMkotlin {
jvm {
jvmToolchain(17)
withJava()
testRuns.named("test") {
executionTask.configure {
useJUnitPlatform()
}
}
}
js {
binaries.executable()
browser {
commonWebpackConfig {
cssSupport {
enabled.set(true)
}
}
runTask {
outputFileName = "main.bundle.js"
sourceMaps = true
devServer = KotlinWebpackConfig.DevServer(
open = false,
port = 3000,
proxy = null,
static = mutableListOf("$buildDir/processedResources/js/main")
)
}
webpackTask {
outputFileName = "main.bundle.js"
output.libraryTarget = "commonjs2"
}
}
}
sourceSets {
val commonMain by getting
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
}
}
val jvmMain by getting {
dependencies {
implementation(platform("org.http4k:http4k-bom:${http4kVersion}"))
implementation("org.http4k:http4k-client-okhttp:${http4kVersion}")
implementation("org.http4k:http4k-core:${http4kVersion}")
implementation("org.http4k:http4k-format-jackson:${http4kVersion}")
implementation("org.http4k:http4k-server-jetty:${http4kVersion}")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")
implementation("org.jetbrains.kotlinx:kotlinx-html:0.9.1")
implementation("org.hotswapagent:hotswap-agent-core:1.4.0")
}
}
val jvmTest by getting
val jsMain by getting {
dependencies {
implementation(npm("tailwindcss", "3.3.5"))
implementation(npm("flowbite", "2.0.0"))
implementation(npm("<http://htmx.org|htmx.org>", "1.9.6"))
}
}
val jsTest by getting
}
}
Artem Kobzar
11/28/2023, 5:23 PMReuben Firmin
11/28/2023, 5:26 PMArtem Kobzar
11/28/2023, 5:54 PMReuben Firmin
11/28/2023, 5:56 PMArtem Kobzar
11/28/2023, 6:08 PMReuben Firmin
11/28/2023, 6:10 PMArtem Kobzar
11/28/2023, 6:14 PMReuben Firmin
11/28/2023, 6:20 PMReuben Firmin
11/28/2023, 6:31 PMwebpackTask(Action {
mainOutputFileName = "main.bundle.js"
output.libraryTarget = "global"
})
(rather than commonjs2) works, and then i just have to explicitly instantiate any of my classes, which seems ok.
e.g. (kotlinx.html)
fun FlowContent.bundleInit() {
// set up htmx
script {
src="/static/bundle/main.bundle.js"
}
script {
unsafe {
// brittle but not terrible
raw("new backend5.ah.view.DarkMode()")
}
}
}
Reuben Firmin
11/28/2023, 6:31 PMArtem Kobzar
11/28/2023, 6:58 PMReuben Firmin
11/28/2023, 6:59 PMArtem Kobzar
11/28/2023, 7:00 PMReuben Firmin
11/28/2023, 7:01 PMArtem Kobzar
11/29/2023, 6:27 AMReuben Firmin
11/29/2023, 11:01 AMArtem Kobzar
11/29/2023, 12:36 PM