From fcc0351f5056506b207a73b1cf287ad4f6228c7b Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Sun, 4 Aug 2024 11:18:51 +0200 Subject: [PATCH] RSC: Set React resolutions during setup (#11152) --- .../commands/experimental/setupRscHandler.js | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/cli/src/commands/experimental/setupRscHandler.js b/packages/cli/src/commands/experimental/setupRscHandler.js index f4275edd4e70..89dd58196971 100644 --- a/packages/cli/src/commands/experimental/setupRscHandler.js +++ b/packages/cli/src/commands/experimental/setupRscHandler.js @@ -367,24 +367,34 @@ export const handler = async ({ force, verbose }) => { const response = await fetch(canaryWebPackageJsonUrl) const canaryPackageJson = await response.json() - // Parse the current package.json in the web side - const currentPackageJsonPath = path.join( + // Read current package.json files + const currentRootPackageJsonPath = path.join( + rwPaths.base, + 'package.json', + ) + const currentRootPackageJson = JSON.parse( + fs.readFileSync(currentRootPackageJsonPath, 'utf-8'), + ) + const currentWebPackageJsonPath = path.join( rwPaths.web.base, 'package.json', ) - const currentPackageJson = JSON.parse( - fs.readFileSync(currentPackageJsonPath, 'utf-8'), + const currentWebPackageJson = JSON.parse( + fs.readFileSync(currentWebPackageJsonPath, 'utf-8'), ) // Update the versions to match const packagesToUpdate = ['react', 'react-dom'] for (const packageName of packagesToUpdate) { - currentPackageJson.dependencies[packageName] = + currentRootPackageJson.resolutions ||= {} + currentRootPackageJson.resolutions[packageName] = + canaryPackageJson.dependencies[packageName] + currentWebPackageJson.dependencies[packageName] = canaryPackageJson.dependencies[packageName] } writeFile( - currentPackageJsonPath, - JSON.stringify(currentPackageJson, null, 2), + currentWebPackageJsonPath, + JSON.stringify(currentWebPackageJson, null, 2), { overwriteExisting: true, },