首页 > 解决方案 > 在 gradle kts 项目中使用 buildSrc 跨子项目共享类型化变量

问题描述

我的情况是我有一个Kotlin/JS项目必须使用LEGACY或定义编译器类型IR。到目前为止,我直接将其中一个值设置为每个模块的范围js()kotlin例如:

kotlin {
    js(LEGACY) {
        // snip
    }
}

我的问题是我必须对所有模块都这样做。如果我想在 和 之间切换IRLEGACY我必须手动应用到所有模块。

我想要一个常量来保存编译器类型值并在子模块之间共享,然后我可以传递给js(compileType).

目前,我可以做到

allprojects { 
    ext {
        set("compilerType", KotlinJsCompilerType.LEGACY)
    }
}

val compilerType: KotlinJsCompilerType by ext

但是,我必须复制val compilerType ... 到所有模块的build.gradle.kts.

我想buildSrc可能是一个解决方案,但我不知道如何为其添加Kotlin/JS依赖项,因此我可以为compilerType. 我尝试添加 JS 插件但没有成功。

plugins {
    kotlin("js")
    id("org.jetbrains.kotlin.js")
}

标签: gradle-kotlin-dslkotlin-js

解决方案


推荐阅读