Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

#96 : Provide configuration for "no-bin-links" NPM option #97

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.jetbrains.kotlin.gradle.frontend.npm

import org.jetbrains.kotlin.gradle.frontend.*
import org.gradle.api.tasks.Input
import org.jetbrains.kotlin.gradle.frontend.Dependency
import java.util.*

/**
Expand All @@ -13,6 +14,12 @@ open class NpmExtension {

val developmentDependencies: MutableList<Dependency> = ArrayList()

/**
* When [Boolean.false] npm install will avoid symlinks on binaries.
*/
@Input
var binLinks: Boolean = true

@JvmOverloads
fun dependency(name: String, version: String = "*") {
dependencies.add(Dependency(name, version, Dependency.RuntimeScope))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
package org.jetbrains.kotlin.gradle.frontend.npm

import org.gradle.api.*
import org.gradle.api.tasks.*
import org.gradle.process.*
import org.jetbrains.kotlin.gradle.frontend.*
import org.jetbrains.kotlin.gradle.frontend.util.*
import java.io.*
import java.net.*
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import org.gradle.process.ExecSpec
import org.jetbrains.kotlin.gradle.frontend.Dependency
import org.jetbrains.kotlin.gradle.frontend.util.NodeJsDownloadTask
import org.jetbrains.kotlin.gradle.frontend.util.nodePath
import org.jetbrains.kotlin.gradle.frontend.util.readLinesOrEmpty
import org.jetbrains.kotlin.gradle.frontend.util.startWithRedirectOnFail
import java.io.File
import java.net.URI
import java.nio.file.*

/**
Expand All @@ -16,6 +22,9 @@ open class NpmInstallTask : DefaultTask() {
@InputFile
lateinit var packageJsonFile: File

@Internal
private val npmExt = project.extensions.getByType(NpmExtension::class.java)!!

@Internal
private val npmDirFile = project.tasks
.filterIsInstance<NodeJsDownloadTask>()
Expand Down Expand Up @@ -50,7 +59,13 @@ open class NpmInstallTask : DefaultTask() {
ensureSymbolicLink(linkPath, target)
}

ProcessBuilder(npmPath, "install")
val command = if (npmExt.binLinks) {
arrayOf("install")
} else {
arrayOf("install", "--no-bin-links")
}

ProcessBuilder(npmPath, *command)
.directory(project.buildDir)
.apply { ensurePath(environment(), npm.parentFile.absolutePath) }
.redirectErrorStream(true)
Expand Down