Kotlin/JS(IR):开启generateTypeScriptDefinitions()后package.json缺失types字段
解决Kotlin/JS IR目标下TypeScript定义未自动添加到package.json的问题
以下是几个排查和解决的方向:
1. 确认generateTypeScriptDefinitions()配置位置正确
确保该配置直接放在js(IR)代码块内,而非嵌套在browser或其他子块中:
kotlin { js(IR) { browser { // 你的浏览器相关配置 } // 正确位置:直接在js(IR)块下声明 generateTypeScriptDefinitions() } }
2. 显式配置package.json的types字段
部分场景下Gradle不会自动注入types字段,需要手动在packageJson块中指定:
kotlin { js(IR) { browser { /* ... */ } generateTypeScriptDefinitions() packageJson { // 替换<your-project-name>为你的项目名称 types = "build/js/packages/<your-project-name>/kotlin/<your-project-name>.d.ts" // 或者用任务输出动态获取路径,更灵活 types = tasks.generateTypeScriptDefinitions.map { it.outputFile.get().relativeTo(project.layout.buildDirectory).asFile.path } } } }
3. 确保构建任务依赖TypeScript定义生成任务
有时候jsBrowserProductionWebpack不会自动触发generateTypeScriptDefinitions,需要手动添加依赖:
tasks.jsBrowserProductionWebpack { dependsOn(tasks.generateTypeScriptDefinitions) }
4. 检查Kotlin Gradle插件版本
旧版本的Kotlin插件(低于1.8.x)在IR目标下可能存在此问题,建议升级到最新稳定版,比如在settings.gradle.kts中:
pluginManagement { plugins { kotlin("js") version "1.9.20" } }
5. 验证TypeScript定义文件是否生成
先手动执行generateTypeScriptDefinitions任务:
./gradlew generateTypeScriptDefinitions
然后查看build/js/packages/<your-project-name>/kotlin/目录下是否存在.d.ts文件。如果文件未生成,需先排查定义生成的问题(比如代码中存在不兼容TS定义的语法)。
内容的提问来源于stack exchange,提问作者Nestor Ledon
相关产品推荐
相关产品推荐

