All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.jetbrains.kotlin.gradle.targets.js.yarn.YarnWorkspaces.kt Maven / Gradle / Ivy
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.yarn
import org.gradle.api.Project
import org.gradle.api.logging.Logger
import org.gradle.internal.service.ServiceRegistry
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmApi
import org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject
import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
import org.jetbrains.kotlin.gradle.targets.js.npm.resolved.KotlinCompilationNpmResolution
import java.io.File
class YarnWorkspaces : YarnBasics() {
override fun preparedFiles(nodeJs: NodeJsRootExtension): Collection {
return listOf(
nodeJs
.rootPackageDir
.resolve(NpmProject.PACKAGE_JSON)
)
}
override fun prepareRootProject(
rootProject: Project?,
nodeJs: NodeJsRootExtension,
rootProjectName: String,
rootProjectVersion: String,
logger: Logger,
subProjects: Collection,
resolutions: Map,
forceFullResolve: Boolean
) {
if (forceFullResolve) {
rootProject?.let { setup(it) }
}
return prepareRootPackageJson(
nodeJs,
rootProjectName,
rootProjectVersion,
logger,
subProjects,
resolutions
)
}
private fun prepareRootPackageJson(
nodeJs: NodeJsRootExtension,
rootProjectName: String,
rootProjectVersion: String,
logger: Logger,
npmProjects: Collection,
resolutions: Map
) {
val rootPackageJsonFile = preparedFiles(nodeJs).single()
saveRootProjectWorkspacesPackageJson(
rootProjectName,
rootProjectVersion,
logger,
npmProjects,
resolutions,
rootPackageJsonFile
)
}
override fun resolveRootProject(
services: ServiceRegistry,
logger: Logger,
nodeJs: NodeJsRootExtension,
command: String,
isStandalone: Boolean,
npmProjects: Collection,
cliArgs: List
) {
val nodeJsWorldDir = nodeJs.rootPackageDir
yarnExec(
services,
logger,
nodeJs,
command,
isStandalone,
nodeJsWorldDir,
NpmApi.resolveOperationDescription("yarn"),
cliArgs
)
yarnLockReadTransitiveDependencies(nodeJsWorldDir, npmProjects.flatMap { it.externalNpmDependencies })
}
private fun saveRootProjectWorkspacesPackageJson(
rootProjectName: String,
rootProjectVersion: String,
logger: Logger,
npmProjects: Collection,
resolutions: Map,
rootPackageJsonFile: File
) {
val nodeJsWorldDir = rootPackageJsonFile.parentFile
val rootPackageJson = PackageJson(rootProjectName, rootProjectVersion)
rootPackageJson.private = true
val npmProjectWorkspaces = npmProjects.map { it.npmProject.dir.relativeTo(nodeJsWorldDir).path }
val importedProjectWorkspaces =
YarnImportedPackagesVersionResolver(logger, npmProjects, nodeJsWorldDir).resolveAndUpdatePackages()
rootPackageJson.workspaces = npmProjectWorkspaces + importedProjectWorkspaces
rootPackageJson.resolutions = resolutions
rootPackageJson.saveTo(
rootPackageJsonFile
)
}
}