如何通过Gradle NpxTask编译验证OpenAPI生成的TypeScript代码?
正确配置Gradle NpxTask调用npx tsc验证OpenAPI生成的TypeScript代码
正确的Gradle Kotlin配置
val openApiCompileSchemaDTs by tasks.registering(NpxTask::class) { description = "Validate generated TypeScript OpenAPI schema with tsc" val openApiSchemaDTs = openApiGenerateSchemaDTs.map { it.outputs.files.singleFile } inputs.file(openApiSchemaDTs) // 指定执行npx命令 command.set("npx") // 按顺序传递npx参数、tsc命令及tsc参数 args.set( listOf( "--yes", "-p", "typescript@4.7.4", "tsc", openApiSchemaDTs.get().absolutePath, "--listFiles", "--noEmit", "--strict" ) ) }
之前配置的错误分析
第一次配置错误
把npx的参数(--yes -p typescript@4.7.4 tsc)直接赋值给command属性,Gradle会将整个字符串当作可执行命令,导致错误地尝试运行生成的schema.d.ts文件,触发权限拒绝报错。第二次配置错误
将command设为tsc,但未通过npx指定TypeScript版本,Gradle Node Plugin会尝试调用本地未安装的tsc命令,因此提示找不到合法的tsc执行路径。
关键配置要点
command必须设为npx:我们实际执行的是npx工具,而非直接调用tsc- 参数顺序严格对应原bash命令:npx的参数(
--yes、-p typescript@4.7.4)在前,随后是tsc命令,最后是tsc的参数(文件路径、--noEmit等) - 使用
listOf传递参数:相比parseSpaceSeparatedArgs,更能避免文件路径含空格时的解析错误 - 传递文件绝对路径:确保tsc能正确定位到生成的schema文件
内容的提问来源于stack exchange,提问作者aSemy
相关产品推荐
相关产品推荐

