Gradle, JS: nodejs target
This commit is contained in:
+1
-1
@@ -74,7 +74,7 @@ class KotlinJsSingleTargetConfigurator(kotlinPluginVersion: String) :
|
|||||||
override fun newTestsConfigurator(compilation: KotlinJsCompilation) =
|
override fun newTestsConfigurator(compilation: KotlinJsCompilation) =
|
||||||
object : KotlinJsCompilationTestsConfigurator(compilation) {
|
object : KotlinJsCompilationTestsConfigurator(compilation) {
|
||||||
override fun configureDefaultTestFramework(it: KotlinJsTest) {
|
override fun configureDefaultTestFramework(it: KotlinJsTest) {
|
||||||
it.useMocha { }
|
it.useKarma { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+45
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.gradle.targets.js.nodejs
|
||||||
|
|
||||||
|
import org.gradle.api.tasks.AbstractExecTask
|
||||||
|
import org.gradle.api.tasks.Internal
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
|
class NodeJsExec : AbstractExecTask<NodeJsExec>(NodeJsExec::class.java) {
|
||||||
|
private val npmProject by lazy { project.npmProject }
|
||||||
|
|
||||||
|
init {
|
||||||
|
val nodeJs = NodeJsPlugin.apply(project).root
|
||||||
|
dependsOn(nodeJs.nodeJsSetupTask)
|
||||||
|
|
||||||
|
executable = nodeJs.environment.nodeExecutable
|
||||||
|
workingDir = project.npmProject.nodeWorkDir
|
||||||
|
}
|
||||||
|
|
||||||
|
@Internal
|
||||||
|
var script: String? = null
|
||||||
|
|
||||||
|
fun require(moduleName: String) {
|
||||||
|
args("--require", moduleName)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun requireSourceMapSupport() {
|
||||||
|
require("kotlin-test-nodejs-runner/kotlin-nodejs-source-map-support.js")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun script(file: File) {
|
||||||
|
check(script == null) {
|
||||||
|
"Script was already set to $script"
|
||||||
|
}
|
||||||
|
script = file.canonicalFile.relativeToOrSelf(npmProject.nodeWorkDir).path
|
||||||
|
}
|
||||||
|
|
||||||
|
fun compileOutput(compilationTask: Kotlin2JsCompile) =
|
||||||
|
script(npmProject.compileOutput(compilationTask))
|
||||||
|
}
|
||||||
+1
-1
@@ -46,7 +46,7 @@ open class NpmProject(
|
|||||||
if (hoistGradleNodeModules) project.rootProject.npmProject.nodeModulesDir
|
if (hoistGradleNodeModules) project.rootProject.npmProject.nodeModulesDir
|
||||||
else nodeModulesDir
|
else nodeModulesDir
|
||||||
|
|
||||||
open fun moduleOutput(compilationTask: Kotlin2JsCompile): File {
|
open fun compileOutput(compilationTask: Kotlin2JsCompile): File {
|
||||||
return compileOutputCopyDest?.resolve(compilationTask.outputFile.name) ?: compilationTask.outputFile
|
return compileOutputCopyDest?.resolve(compilationTask.outputFile.name) ?: compilationTask.outputFile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -132,7 +132,7 @@ open class KotlinWebpack : DefaultTask() {
|
|||||||
|
|
||||||
it.dependsOn(compileKotlinTask)
|
it.dependsOn(compileKotlinTask)
|
||||||
|
|
||||||
it.entry = npmProject.moduleOutput(compileKotlinTask)
|
it.entry = npmProject.compileOutput(compileKotlinTask)
|
||||||
|
|
||||||
it.outputs.upToDateWhen { false }
|
it.outputs.upToDateWhen { false }
|
||||||
}
|
}
|
||||||
@@ -148,7 +148,7 @@ open class KotlinWebpack : DefaultTask() {
|
|||||||
it.dependsOn(compileKotlinTask)
|
it.dependsOn(compileKotlinTask)
|
||||||
|
|
||||||
it.bin = "webpack-dev-server"
|
it.bin = "webpack-dev-server"
|
||||||
it.entry = npmProject.moduleOutput(compileKotlinTask)
|
it.entry = npmProject.compileOutput(compileKotlinTask)
|
||||||
|
|
||||||
val projectDir = compilation.target.project.projectDir.canonicalPath
|
val projectDir = compilation.target.project.projectDir.canonicalPath
|
||||||
it.devServer = KotlinWebpackConfig.DevServer(
|
it.devServer = KotlinWebpackConfig.DevServer(
|
||||||
|
|||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.gradle.targets.nodejs
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinOnlyTarget
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsCompilationTestsConfigurator
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.KotlinJsTargetConfigurator
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsExec
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.npm.npmProject
|
||||||
|
import org.jetbrains.kotlin.gradle.targets.js.testing.KotlinJsTest
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.createOrRegisterTask
|
||||||
|
|
||||||
|
class KotlinNodeJsSingleTargetConfigurator(kotlinPluginVersion: String) :
|
||||||
|
KotlinJsTargetConfigurator(kotlinPluginVersion) {
|
||||||
|
|
||||||
|
override fun configureTarget(target: KotlinOnlyTarget<KotlinJsCompilation>) {
|
||||||
|
super.configureTarget(target)
|
||||||
|
configureApplication(target)
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun configureApplication(target: KotlinOnlyTarget<KotlinJsCompilation>) {
|
||||||
|
target.compilations.all { compilation ->
|
||||||
|
if (compilation.name == KotlinCompilation.MAIN_COMPILATION_NAME) {
|
||||||
|
// source maps support
|
||||||
|
compilation.dependencies {
|
||||||
|
runtimeOnly(kotlin("test-nodejs-runner"))
|
||||||
|
}
|
||||||
|
|
||||||
|
val project = target.project
|
||||||
|
project.createOrRegisterTask<NodeJsExec>("run") {
|
||||||
|
it.args(
|
||||||
|
project.npmProject.compileOutput(compilation.compileKotlinTask),
|
||||||
|
"--require", "kotlin-test-nodejs-runner/kotlin-nodejs-source-map-support.js"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun newTestsConfigurator(compilation: KotlinJsCompilation) =
|
||||||
|
object : KotlinJsCompilationTestsConfigurator(compilation) {
|
||||||
|
override fun configureDefaultTestFramework(it: KotlinJsTest) {
|
||||||
|
it.useNodeJs { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user