Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
65faf204
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 搜索 >>
未验证
提交
65faf204
编写于
1月 19, 2021
作者:
A
Alexander Likhachev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Gradle, JS] Make PublicPackageJsonTask cc-compatible
上级
521b722c
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
63 addition
and
47 deletion
+63
-47
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt
...gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt
+1
-1
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/AbstractNodeModulesCache.kt
.../kotlin/gradle/targets/js/npm/AbstractNodeModulesCache.kt
+2
-0
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/PublicPackageJsonTask.kt
...ins/kotlin/gradle/targets/js/npm/PublicPackageJsonTask.kt
+47
-38
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/plugins/CompilationResolverPlugin.kt
...radle/targets/js/npm/plugins/CompilationResolverPlugin.kt
+1
-2
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
+12
-6
未找到文件。
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/dukat/DukatCompilationResolverPlugin.kt
浏览文件 @
65faf204
...
...
@@ -85,7 +85,7 @@ internal class DukatCompilationResolverPlugin(
internalCompositeDependencies
:
Set
<
KotlinCompilationNpmResolver
.
CompositeDependency
>,
externalGradleDependencies
:
Set
<
KotlinCompilationNpmResolver
.
ExternalGradleDependency
>,
externalNpmDependencies
:
Set
<
NpmDependency
>,
fileCollectionDependencies
:
Set
<
FileCollection
Dependency
>
fileCollectionDependencies
:
Set
<
KotlinCompilationNpmResolver
.
FileCollectionExternalGradle
Dependency
>
)
{
if
(
nodeJs
.
experimental
.
discoverTypes
)
{
// todo: discoverTypes
...
...
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/AbstractNodeModulesCache.kt
浏览文件 @
65faf204
...
...
@@ -53,6 +53,8 @@ internal abstract class AbstractNodeModulesCache(nodeJs: NodeJsRootExtension) :
}
}
// Synchronized as tasks from configuration cache run in parallel and every task has it's own modules cache
@Synchronized
fun
makeNodeModule
(
container
:
File
,
packageJson
:
PackageJson
,
...
...
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/PublicPackageJsonTask.kt
浏览文件 @
65faf204
...
...
@@ -11,8 +11,10 @@ import org.gradle.api.tasks.Nested
import
org.gradle.api.tasks.OutputFile
import
org.gradle.api.tasks.TaskAction
import
org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJsCompilation
import
org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrCompilation
import
org.jetbrains.kotlin.gradle.targets.js.npm.NpmProject.Companion.PACKAGE_JSON
import
org.jetbrains.kotlin.gradle.utils.disableTaskOnConfigurationCacheBuild
import
org.jetbrains.kotlin.gradle.utils.getValue
import
org.jetbrains.kotlin.gradle.utils.property
import
java.io.File
import
javax.inject.Inject
...
...
@@ -27,29 +29,32 @@ constructor(
private
val
nodeJs
=
npmProject
.
nodeJs
private
val
compilationName
=
compilation
.
name
private
val
projectPath
=
project
.
path
private
val
compilationResolution
get
()
=
nodeJs
.
npmResolutionManager
.
requireInstalled
(
services
,
logger
)[
projectPath
][
compilationName
]
private
val
compilationResolution
by
lazy
{
nodeJs
.
npmResolutionManager
.
requireInstalled
(
services
,
logger
)[
project
.
path
][
compilationName
]
}
init
{
// TODO: temporary workaround for configuration cache enabled builds
// disableTaskOnConfigurationCacheBuild { nodeJs.npmResolutionManager.toString() }
}
// @get:Input
// val packageJsonCustomFields: Map<String, Any?>
// get() = PackageJson(fakePackageJsonValue, fakePackageJsonValue)
// .apply {
// compilation.packageJsonHandlers.forEach { it() }
// }.customFields
// TODO: is map contains only serializable values?
@
get
:
Input
val
packageJsonCustomFields
:
Map
<
String
,
Any
?
>
by
lazy
{
PackageJson
(
fakePackageJsonValue
,
fakePackageJsonValue
)
.
apply
{
compilation
.
packageJsonHandlers
.
forEach
{
it
()
}
}.
customFields
}
@
get
:
Nested
internal
val
externalDependencies
:
Collection
<
NpmDependencyDeclaration
>
by
lazy
{
compilationResolution
.
externalNpmDependencies
internal
val
externalDependencies
:
Collection
<
NpmDependencyDeclaration
>
get
()
=
compilationResolution
.
externalNpmDependencies
.
map
{
NpmDependencyDeclaration
(
scope
=
it
.
scope
,
...
...
@@ -58,40 +63,44 @@ constructor(
generateExternals
=
it
.
generateExternals
)
}
}
private
val
publicPackageJsonTaskName
=
npmProject
.
publicPackageJsonTaskName
private
val
publicPackageJsonTaskName
by
lazy
{
npmProject
.
publicPackageJsonTaskName
}
@
get
:
OutputFile
var
packageJsonFile
:
File
by
property
{
private
val
defaultPackageJsonFile
by
lazy
{
project
.
buildDir
.
resolve
(
"tmp"
)
.
resolve
(
publicPackageJsonTaskName
)
.
resolve
(
PACKAGE_JSON
)
}
@
get
:
OutputFile
var
packageJsonFile
:
File
by
property
{
defaultPackageJsonFile
}
private
val
isJrIrCompilation
=
compilation
is
KotlinJsIrCompilation
private
val
projectVersion
=
project
.
version
.
toString
()
@TaskAction
fun
resolve
()
{
// val compilation = npmProject.compilation
//
// packageJson(npmProject, realExternalDependencies).let { packageJson ->
// packageJson.main = "${npmProject.name}.js"
//
// if (compilation is KotlinJsIrCompilation) {
// packageJson.types = "${npmProject.name}.d.ts"
// }
//
// packageJson.apply {
// listOf(
// dependencies,
// devDependencies,
// peerDependencies,
// optionalDependencies
// ).forEach { it.processDependencies() }
// }
//
// packageJson.saveTo(this@PublicPackageJsonTask.packageJsonFile)
// }
packageJson
(
npmProject
.
name
,
projectVersion
,
npmProject
.
main
,
externalDependencies
).
let
{
packageJson
->
packageJson
.
main
=
"${npmProject.name}.js"
if
(
isJrIrCompilation
)
{
packageJson
.
types
=
"${npmProject.name}.d.ts"
}
packageJson
.
apply
{
listOf
(
dependencies
,
devDependencies
,
peerDependencies
,
optionalDependencies
).
forEach
{
it
.
processDependencies
()
}
}
packageJson
.
saveTo
(
this
@PublicPackageJsonTask
.
packageJsonFile
)
}
}
private
fun
MutableMap
<
String
,
String
>.
processDependencies
()
{
...
...
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/plugins/CompilationResolverPlugin.kt
浏览文件 @
65faf204
...
...
@@ -5,7 +5,6 @@
package
org.jetbrains.kotlin.gradle.targets.js.npm.plugins
import
org.gradle.api.artifacts.FileCollectionDependency
import
org.jetbrains.kotlin.gradle.targets.js.npm.NpmDependency
import
org.jetbrains.kotlin.gradle.targets.js.npm.resolver.KotlinCompilationNpmResolver
...
...
@@ -15,6 +14,6 @@ internal interface CompilationResolverPlugin {
internalCompositeDependencies
:
Set
<
KotlinCompilationNpmResolver
.
CompositeDependency
>,
externalGradleDependencies
:
Set
<
KotlinCompilationNpmResolver
.
ExternalGradleDependency
>,
externalNpmDependencies
:
Set
<
NpmDependency
>,
fileCollectionDependencies
:
Set
<
FileCollection
Dependency
>
fileCollectionDependencies
:
Set
<
KotlinCompilationNpmResolver
.
FileCollectionExternalGradle
Dependency
>
)
}
\ No newline at end of file
libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt
浏览文件 @
65faf204
...
...
@@ -11,6 +11,7 @@ import org.gradle.api.artifacts.ResolvedArtifact
import
org.gradle.api.artifacts.ResolvedDependency
import
org.gradle.api.artifacts.component.ProjectComponentIdentifier
import
org.gradle.api.attributes.Usage
import
org.gradle.api.file.FileCollection
import
org.gradle.api.initialization.IncludedBuild
import
org.gradle.api.internal.artifacts.DefaultProjectComponentIdentifier
import
org.gradle.api.tasks.Input
...
...
@@ -210,6 +211,11 @@ internal class KotlinCompilationNpmResolver(
val
artifact
:
ResolvedArtifact
)
data class
FileCollectionExternalGradleDependency
(
val
fileCollection
:
FileCollection
,
val
dependencyVersion
:
String
?
)
data class
FileExternalGradleDependency
(
val
dependencyName
:
String
,
val
dependencyVersion
:
String
,
...
...
@@ -226,7 +232,7 @@ internal class KotlinCompilationNpmResolver(
private
val
internalCompositeDependencies
=
mutableSetOf
<
CompositeDependency
>()
private
val
externalGradleDependencies
=
mutableSetOf
<
ExternalGradleDependency
>()
private
val
externalNpmDependencies
=
mutableSetOf
<
NpmDependency
>()
private
val
fileCollectionDependencies
=
mutableSetOf
<
FileCollectionDependency
>()
private
val
fileCollectionDependencies
=
mutableSetOf
<
FileCollection
ExternalGradle
Dependency
>()
fun
visit
(
configuration
:
Configuration
)
{
configuration
.
resolvedConfiguration
.
firstLevelModuleDependencies
.
forEach
{
...
...
@@ -236,7 +242,7 @@ internal class KotlinCompilationNpmResolver(
configuration
.
allDependencies
.
forEach
{
dependency
->
when
(
dependency
)
{
is
NpmDependency
->
externalNpmDependencies
.
add
(
dependency
)
is
FileCollectionDependency
->
fileCollectionDependencies
.
add
(
dependency
)
is
FileCollectionDependency
->
fileCollectionDependencies
.
add
(
FileCollectionExternalGradleDependency
(
dependency
.
files
,
dependency
.
version
)
)
}
}
...
...
@@ -369,7 +375,7 @@ internal class KotlinCompilationNpmResolver(
val
externalGradleDependencies
:
Collection
<
ExternalGradleDependency
>,
@Transient
val
externalNpmDependencies
:
Collection
<
NpmDependency
>,
val
fileCollectionDependencies
:
Collection
<
FileCollectionDependency
>
val
fileCollectionDependencies
:
Collection
<
FileCollection
ExternalGradle
Dependency
>
)
{
val
externalNpmDependencyDeclarations
by
lazy
{
externalNpmDependencies
.
map
{
...
...
@@ -393,7 +399,7 @@ internal class KotlinCompilationNpmResolver(
internalCompositeDependencies
.
flatMap
{
it
.
getPackages
()
},
fileExternalGradleDependencies
.
map
{
it
.
file
},
externalNpmDependencyDeclarations
.
map
{
it
.
uniqueRepresentation
()
},
fileCollectionDependencies
.
map
{
it
.
files
}.
flatMap
{
it
.
files
}
fileCollectionDependencies
.
map
{
it
.
fileCollection
}.
flatMap
{
it
.
files
}
)
fun
createPackageJson
(
skipWriting
:
Boolean
):
KotlinCompilationNpmResolution
{
...
...
@@ -404,13 +410,13 @@ internal class KotlinCompilationNpmResolver(
val
importedExternalGradleDependencies
=
fileExternalGradleDependencies
.
mapNotNull
{
gradleNodeModules
.
get
(
it
.
dependencyName
,
it
.
dependencyVersion
,
it
.
file
)
}
+
fileCollectionDependencies
.
flatMap
{
dependency
->
dependency
.
files
dependency
.
file
Collection
.
file
s
// Gradle can hash with FileHasher only files and only existed files
.
filter
{
it
.
isFile
}
.
map
{
file
->
gradleNodeModules
.
get
(
file
.
name
,
dependency
.
v
ersion
?:
"0.0.1"
,
dependency
.
dependencyV
ersion
?:
"0.0.1"
,
file
)
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录