-
-
Notifications
You must be signed in to change notification settings - Fork 118
Open
Description
Core issue
private fun computeProductBinDir(productDirProvider: Provider<Directory>, platform: Property<Platform>) =
if (platform.get().isWindows()) productDirProvider else productDirProvider.map { it.dir("bin") }
This isn't true. On Windows, corepack also installs yarn.cmd (along with yarn the bash script and yarn.ps1, etc.) to it.dir("bin") too.
This line should be
productDirProvider.map { it.dir("bin") }
related to #176 , this enables Yarn 2-4 and works around the posted issue:
import groovy.json.JsonSlurper
def packageJson = new JsonSlurper().parseText(rootProject.file('package.json').text)
def yarnVersionStr = (packageJson.packageManager as String).split("@")[1]
node {
download = false
yarnVersion = yarnVersionStr
yarnWorkDir.set(rootProject.layout.projectDirectory.dir(".gradle/yarn"))
}
def isWindows = org.gradle.internal.os.OperatingSystem.current().isWindows()
def binExt = isWindows ? ".cmd" : ""
tasks.register("corepack") {
def dirPath = ".gradle/yarn/yarn-v${yarnVersionStr}/${isWindows ? "" : "/bin"}"
outputs.dir(dirPath)
doLast {
mkdir(dirPath)
exec {
commandLine "corepack${binExt}", "enable", "--install-directory", dirPath
}
}
}
tasks.named("yarnSetup").configure {
enabled = false
dependsOn "corepack"
}
// as an alternative to yarn install, which has a lot going on, and also supports workspaces
tasks.register('yarnWorkspace', YarnTask) {
// todo: you don't want to inspect workspaces if you don't use it
description("Installs all the necessary modules to develop ${packageJson.workspaces.join(', ')}")
inputs.files("package.json", "yarn.lock")
.withPropertyName("yarnLock")
.withPathSensitivity(PathSensitivity.RELATIVE)
inputs.files(packageJson.workspaces.collect { "$it/package.json" })
.withPropertyName("workspacePackageJsons")
.withPathSensitivity(PathSensitivity.RELATIVE)
// todo: this only makes sense for node-modules resolution and will need to inspect the .yarnrc.yml file
outputs.file("node_modules/.yarn-state.yml")
outputs.cacheIf { false }
args = ['install', '--immutable']
}ericparton and plumpNation
Metadata
Metadata
Assignees
Labels
No labels