| /* |
| * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. |
| */ |
| |
| apply from: rootProject.file('gradle/node-js.gradle') |
| |
| kotlin { |
| js { |
| // In 1.3.7x js() has not member `moduleName` |
| // In 1.4.x it has and allow to safety set compiler output file name and does not break test integration |
| if (it.hasProperty("moduleName")) { |
| moduleName = project.name |
| } |
| |
| // In 1.3.7x js() has not member `irTarget` |
| // In 1.4.x it has in `both` and `legacy` mode and js() is of type `KotlinJsTarget` |
| // `irTarget` is non-null in `both` mode |
| // and contains appropriate `irTarget` with type `KotlinJsIrTarget` |
| // `irTarget` is null in `legacy` mode |
| if (it.hasProperty("irTarget") && it.irTarget != null) { |
| irTarget.nodejs() |
| irTarget.compilations['main']?.dependencies { |
| api "org.jetbrains.kotlinx:atomicfu-js:$atomicfu_version" |
| } |
| } |
| } |
| |
| sourceSets { |
| jsMain.dependencies { |
| api "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" |
| } |
| |
| jsTest.dependencies { |
| api "org.jetbrains.kotlin:kotlin-test-js:$kotlin_version" |
| } |
| } |
| } |
| |
| // When source sets are configured |
| apply from: rootProject.file('gradle/test-mocha-js.gradle') |
| |
| def compileJsLegacy = tasks.hasProperty("compileKotlinJsLegacy") |
| ? compileKotlinJsLegacy |
| : compileKotlinJs |
| |
| def compileTestJsLegacy = tasks.hasProperty("compileTestKotlinJsLegacy") |
| ? compileTestKotlinJsLegacy |
| : compileTestKotlinJs |
| |
| compileJsLegacy.configure { |
| kotlinOptions.metaInfo = true |
| kotlinOptions.sourceMap = true |
| kotlinOptions.moduleKind = 'umd' |
| |
| kotlinOptions { |
| // drop -js suffix from outputFile |
| def baseName = project.name - "-js" |
| outputFile = new File(outputFile.parent, baseName + ".js") |
| } |
| } |
| |
| compileTestJsLegacy.configure { |
| kotlinOptions.metaInfo = true |
| kotlinOptions.sourceMap = true |
| kotlinOptions.moduleKind = 'umd' |
| } |
| |
| |
| task populateNodeModules(type: Copy, dependsOn: compileTestJsLegacy) { |
| // we must copy output that is transformed by atomicfu |
| from(kotlin.js().compilations.main.output.allOutputs) |
| into "$node.nodeModulesDir/node_modules" |
| |
| def configuration = configurations.hasProperty("jsLegacyTestRuntimeClasspath") |
| ? configurations.jsLegacyTestRuntimeClasspath |
| : configurations.jsTestRuntimeClasspath |
| |
| from(files { |
| configuration.collect { File file -> |
| file.name.endsWith(".jar") ? |
| zipTree(file.absolutePath).matching { |
| include '*.js' |
| include '*.js.map' |
| } : files() |
| } |
| }.builtBy(configuration)) |
| } |
| |
| npmInstall.dependsOn populateNodeModules |