如果我从https://search.maven.org/artifact/org.jetbrains.kotlinx/kotlinx-serialization-core/1.3.3/pom或https://mvnrepository.com/artifact/org.jetbrains.kotlin-wrappers/kotlin-wrappers-bom/1.0.0-pre.501手动下载Kotlin/JS JAR文件,则编译后的JS文件不会出现在JAR文件中。但是,如果我通过Gradle获取这些文件并 checkout 外部库的内容,则编译后的JS文件会出现。
我以为这是同一个JAR文件,但显然不是。JAR文件是根据Gradle的特定请求动态创建的吗?也许是这样,因为Gradle下载的JS文件只包含LEGACY输出,这与我的项目仍然使用LEGACY进行编译的情况相符。
我这样问是因为Kotlin/JS可以“同时”用两个编译器编译(IR和LEGACY都用),我想看看编译后的JS文件在第三方库中使用时是如何结构化的。
1条答案
按热度按时间ldioqlga1#
您可能正在查看多平台模块发布,而不是实际的JS发布。
多平台模块利用Gradle变体机制来查找需要下载的实际工件(基于一组属性)。在第一个链接和browsing the actual files之后,您将看到一个
.module
文件。该文件是一个JSON文件,描述了工件及其属性的列表,Gradle将查看该文件以了解要下载的内容。例如,在
.module
文件中的某个位置,您将看到:因此,如果您实际上转到后缀为
-js
的工件(url
字段指向的地方)而不是模块工件,您将发现包含JS代码的jar:https://repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-serialization-core-js/1.3.3/