Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
19e59fe7
K
kotlin
项目概览
硅谷海盗
/
kotlin
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kotlin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
19e59fe7
编写于
10月 15, 2020
作者:
I
Ilya Goncharov
提交者:
Alexander Likhachev
2月 15, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Gradle, JS] Experimenting with making everything transient in npm
上级
cc51869a
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
47 addition
and
11 deletion
+47
-11
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootPlugin.kt
...rains/kotlin/gradle/targets/js/nodejs/NodeJsRootPlugin.kt
+5
-1
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolved/KotlinCompilationNpmResolution.kt
...targets/js/npm/resolved/KotlinCompilationNpmResolution.kt
+2
-0
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt
...e/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt
+32
-3
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt
...radle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt
+0
-1
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt
...n/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt
+4
-5
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt
...tlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt
+4
-1
未找到文件。
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/NodeJsRootPlugin.kt
浏览文件 @
19e59fe7
...
...
@@ -7,9 +7,11 @@ package org.jetbrains.kotlin.gradle.targets.js.nodejs
import
org.gradle.api.Plugin
import
org.gradle.api.Project
import
org.gradle.api.Task
import
org.gradle.api.plugins.BasePlugin
import
org.jetbrains.kotlin.gradle.targets.js.MultiplePluginDeclarationDetector
import
org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension.Companion.EXTENSION_NAME
import
org.jetbrains.kotlin.gradle.targets.js.npm.resolver.PACKAGE_JSON_UMBRELLA_TASK_NAME
import
org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask
import
org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin
import
org.jetbrains.kotlin.gradle.tasks.CleanDataTask
...
...
@@ -34,7 +36,7 @@ open class NodeJsRootPlugin : Plugin<Project> {
val
rootClean
=
project
.
rootProject
.
tasks
.
named
(
BasePlugin
.
CLEAN_TASK_NAME
)
tasks
.
register
(
KotlinNpmInstallTask
.
NAME
,
KotlinNpmInstallTask
::
class
.
java
)
{
registerTask
<
KotlinNpmInstallTask
>(
KotlinNpmInstallTask
.
NAME
)
{
it
.
dependsOn
(
setupTask
)
it
.
group
=
TASKS_GROUP_NAME
it
.
description
=
"Find, download and link NPM dependencies and projects"
...
...
@@ -42,6 +44,8 @@ open class NodeJsRootPlugin : Plugin<Project> {
it
.
mustRunAfter
(
rootClean
)
}
registerTask
<
Task
>(
PACKAGE_JSON_UMBRELLA_TASK_NAME
)
YarnPlugin
.
apply
(
project
)
tasks
.
register
(
"node"
+
CleanDataTask
.
NAME_SUFFIX
,
CleanDataTask
::
class
.
java
)
{
...
...
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolved/KotlinCompilationNpmResolution.kt
浏览文件 @
19e59fe7
...
...
@@ -15,7 +15,9 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.PackageJson
* Resolved [NpmProject]
*/
class
KotlinCompilationNpmResolution
(
@Transient
val
project
:
Project
,
@Transient
val
npmProject
:
NpmProject
,
val
internalDependencies
:
Collection
<
KotlinCompilationNpmResolution
>,
val
internalCompositeDependencies
:
Collection
<
GradleNodeModule
>,
...
...
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt
浏览文件 @
19e59fe7
...
...
@@ -43,16 +43,27 @@ import java.io.Serializable
* See [KotlinNpmResolutionManager] for details about resolution process.
*/
internal
class
KotlinCompilationNpmResolver
(
@Transient
val
projectResolver
:
KotlinProjectNpmResolver
,
@Transient
val
compilation
:
KotlinJsCompilation
)
{
@Transient
val
resolver
=
projectResolver
.
resolver
@Transient
val
npmProject
=
compilation
.
npmProject
val
nodeJs
get
()
=
resolver
.
nodeJs
val
target
get
()
=
compilation
.
target
val
project
get
()
=
target
.
project
@Transient
val
packageJsonTaskHolder
=
KotlinPackageJsonTask
.
create
(
compilation
)
@Transient
val
publicPackageJsonTaskHolder
:
TaskProvider
<
PublicPackageJsonTask
>
=
project
.
registerTask
<
PublicPackageJsonTask
>(
npmProject
.
publicPackageJsonTaskName
,
...
...
@@ -71,6 +82,7 @@ internal class KotlinCompilationNpmResolver(
}
}
@Transient
val
plugins
:
List
<
CompilationResolverPlugin
>
=
projectResolver
.
resolver
.
plugins
.
flatMap
{
if
(
compilation
.
isMain
())
{
...
...
@@ -168,6 +180,12 @@ internal class KotlinCompilationNpmResolver(
val
artifact
:
ResolvedArtifact
)
data class
FileExternalGradleDependency
(
val
dependencyName
:
String
,
val
dependencyVersion
:
String
,
val
file
:
File
)
data class
CompositeDependency
(
val
dependency
:
ResolvedDependency
,
val
includedBuild
:
IncludedBuild
...
...
@@ -317,15 +335,26 @@ internal class KotlinCompilationNpmResolver(
inner
class
PackageJsonProducer
(
val
internalDependencies
:
Collection
<
KotlinCompilationNpmResolver
>,
val
internalCompositeDependencies
:
Collection
<
CompositeDependency
>,
@Transient
val
externalGradleDependencies
:
Collection
<
ExternalGradleDependency
>,
val
externalNpmDependencies
:
Collection
<
NpmDependency
>,
val
fileCollectionDependencies
:
Collection
<
FileCollectionDependency
>
)
{
val
fileExternalGradleDependencies
by
lazy
{
externalGradleDependencies
.
map
{
FileExternalGradleDependency
(
it
.
dependency
.
moduleName
,
it
.
dependency
.
moduleVersion
,
it
.
artifact
.
file
)
}
}
val
inputs
:
PackageJsonProducerInputs
get
()
=
PackageJsonProducerInputs
(
internalDependencies
.
map
{
it
.
npmProject
.
name
},
internalCompositeDependencies
.
flatMap
{
it
.
getPackages
()
},
externalGradleDependencies
.
map
{
it
.
artifac
t
.
file
},
fileExternalGradleDependencies
.
map
{
i
t
.
file
},
externalNpmDependencies
.
map
{
it
.
uniqueRepresentation
()
},
fileCollectionDependencies
.
map
{
it
.
files
}.
flatMap
{
it
.
files
}
)
...
...
@@ -335,8 +364,8 @@ internal class KotlinCompilationNpmResolver(
it
.
getResolutionOrResolveIfForced
()
?:
error
(
"Unresolved dependent npm package: ${this@KotlinCompilationNpmResolver} -> $it"
)
}
val
importedExternalGradleDependencies
=
e
xternalGradleDependencies
.
mapNotNull
{
resolver
.
gradleNodeModules
.
get
(
it
.
dependency
.
moduleName
,
it
.
dependency
.
moduleVersion
,
it
.
artifac
t
.
file
)
val
importedExternalGradleDependencies
=
fileE
xternalGradleDependencies
.
mapNotNull
{
resolver
.
gradleNodeModules
.
get
(
it
.
dependency
Name
,
it
.
dependencyVersion
,
i
t
.
file
)
}
+
fileCollectionDependencies
.
flatMap
{
dependency
->
dependency
.
files
// Gradle can hash with FileHasher only files and only existed files
...
...
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinProjectNpmResolver.kt
浏览文件 @
19e59fe7
...
...
@@ -45,7 +45,6 @@ internal class KotlinProjectNpmResolver(
init
{
addContainerListeners
()
project
.
whenEvaluated
{
val
nodeJs
=
resolver
.
nodeJs
project
.
tasks
.
implementing
(
RequiresNpmDependencies
::
class
)
...
...
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinRootNpmResolver.kt
浏览文件 @
19e59fe7
...
...
@@ -49,25 +49,24 @@ internal class KotlinRootNpmResolver internal constructor(
val
gradleNodeModules
=
GradleNodeModulesCache
(
nodeJs
)
val
compositeNodeModules
=
CompositeNodeModulesCache
(
nodeJs
)
val
packageJsonUmbrella
=
rootProject
.
registerTask
(
PACKAGE_JSON_UMBRELLA_TASK_NAME
,
Task
::
class
.
java
)
{}
val
projectResolvers
=
mutableMapOf
<
Project
,
KotlinProjectNpmResolver
>()
val
projectResolvers
=
mutableMapOf
<
String
,
KotlinProjectNpmResolver
>()
fun
alreadyResolvedMessage
(
action
:
String
)
=
"Cannot $action. NodeJS projects already resolved."
@Synchronized
fun
addProject
(
target
:
Project
)
{
check
(
state
==
State
.
CONFIGURING
)
{
alreadyResolvedMessage
(
"add new project: $target"
)
}
projectResolvers
[
target
]
=
KotlinProjectNpmResolver
(
target
,
this
)
projectResolvers
[
target
.
path
]
=
KotlinProjectNpmResolver
(
target
,
this
)
}
operator
fun
get
(
project
:
Project
)
=
projectResolvers
[
project
]
?:
error
(
"$project
is not configured for JS usage"
)
operator
fun
get
(
project
Path
:
String
)
=
projectResolvers
[
projectPath
]
?:
error
(
"$projectPath
is not configured for JS usage"
)
val
compilations
:
Collection
<
KotlinJsCompilation
>
get
()
=
projectResolvers
.
values
.
flatMap
{
it
.
compilationResolvers
.
map
{
it
.
compilation
}
}
fun
findDependentResolver
(
src
:
Project
,
target
:
Project
):
List
<
KotlinCompilationNpmResolver
>?
{
// todo: proper finding using KotlinTargetComponent.findUsageContext
val
targetResolver
=
this
[
target
]
val
targetResolver
=
this
[
target
.
path
]
val
mainCompilations
=
targetResolver
.
compilationResolvers
.
filter
{
it
.
compilation
.
isMain
()
}
return
if
(
mainCompilations
.
isNotEmpty
())
{
...
...
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/tasks/KotlinPackageJsonTask.kt
浏览文件 @
19e59fe7
...
...
@@ -33,8 +33,11 @@ open class KotlinPackageJsonTask : DefaultTask() {
@Transient
private
lateinit
var
compilation
:
KotlinJsCompilation
@Input
val
projectPath
=
project
.
path
private
val
compilationResolver
get
()
=
nodeJs
.
npmResolutionManager
.
resolver
[
project
][
compilation
]
get
()
=
nodeJs
.
npmResolutionManager
.
resolver
[
project
Path
][
compilation
]
private
val
producer
:
KotlinCompilationNpmResolver
.
PackageJsonProducer
get
()
=
compilationResolver
.
packageJsonProducer
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录