From eda3aad75c5420eebe20e75babed6539ef80d4b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20=C5=BBelawski?= Date: Fri, 5 Dec 2025 17:22:47 +0100 Subject: [PATCH] fix: RNGP CCache compatibility --- .../com/facebook/react/utils/PathUtils.kt | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/PathUtils.kt b/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/PathUtils.kt index 510b157e6b1ebf..120ac1aea1dbdb 100644 --- a/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/PathUtils.kt +++ b/packages/gradle-plugin/react-native-gradle-plugin/src/main/kotlin/com/facebook/react/utils/PathUtils.kt @@ -42,6 +42,7 @@ internal fun detectedEntryFile(config: ReactExtension, envVariableOverride: Stri */ internal fun detectedCliFile(config: ReactExtension): File = detectCliFile( + project = config.project, reactNativeRoot = config.root.get().asFile, preconfiguredCliFile = config.cliFile.asFile.orNull, ) @@ -71,7 +72,11 @@ private fun detectEntryFile( else -> File(reactRoot, "index.js") } -private fun detectCliFile(reactNativeRoot: File, preconfiguredCliFile: File?): File { +private fun detectCliFile( + project: Project, + reactNativeRoot: File, + preconfiguredCliFile: File? +): File { // 1. preconfigured path if (preconfiguredCliFile != null) { if (preconfiguredCliFile.exists()) { @@ -81,14 +86,11 @@ private fun detectCliFile(reactNativeRoot: File, preconfiguredCliFile: File?): F // 2. node module path val nodeProcess = - Runtime.getRuntime() - .exec( - arrayOf("node", "--print", "require.resolve('react-native/cli');"), - emptyArray(), - reactNativeRoot, - ) - - val nodeProcessOutput = nodeProcess.inputStream.use { it.bufferedReader().readText().trim() } + project.providers.exec { + it.commandLine("node", "--print", "require.resolve('react-native/package.json')") + } + + val nodeProcessOutput = nodeProcess.standardOutput.asText.get().trim() if (nodeProcessOutput.isNotEmpty()) { val nodeModuleCliJs = File(nodeProcessOutput)