From 7486a2bc50ddb23ed5ec295778fc803f69ec7739 Mon Sep 17 00:00:00 2001 From: Alex Hunt Date: Fri, 7 Nov 2025 17:13:23 -0800 Subject: [PATCH] Fix set-version script to update rn-tester (#54451) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/54451 Restores behaviour pre-D76358273. `rn-tester` is a special case package that we do want to version, even though it's marked as `private: true`. Changelog: [Internal] Reviewed By: christophpurrer Differential Revision: D86534510 fbshipit-source-id: 5557e22361bba82a6acaa5eab911002bb9894ae4 --- scripts/releases/set-version.js | 17 +++++++---------- scripts/shared/monorepoUtils.js | 26 ++++++++++++++++++++------ 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/scripts/releases/set-version.js b/scripts/releases/set-version.js index 203d6983956..497ce0b9c4d 100644 --- a/scripts/releases/set-version.js +++ b/scripts/releases/set-version.js @@ -72,19 +72,16 @@ async function setVersion( skipReactNativeVersion /*: boolean */ = false, ) /*: Promise */ { const packages = await getPackages({ - includePrivate: true, includeReactNative: true, + forceIncludeRNTester: true, }); const newPackageVersions = Object.fromEntries( - Object.entries(packages).map(([packageName, {packageJson}]) => { - let packageVersion = version; - if (packageName === 'react-native' && skipReactNativeVersion) { - packageVersion = '1000.0.0'; - } else if (packageJson.private === true) { - packageVersion = packageJson.version ?? '0.0.0'; - } - return [packageName, packageVersion]; - }), + Object.keys(packages).map(packageName => [ + packageName, + packageName === 'react-native' && skipReactNativeVersion + ? '1000.0.0' + : version, + ]), ); const packagesToUpdate = [ diff --git a/scripts/shared/monorepoUtils.js b/scripts/shared/monorepoUtils.js index 6fc9a9d9e1e..0fa71e6fccb 100644 --- a/scripts/shared/monorepoUtils.js +++ b/scripts/shared/monorepoUtils.js @@ -27,8 +27,15 @@ export type PackageJson = { }; type PackagesFilter = $ReadOnly<{ + // Include the main react-native package includeReactNative: boolean, + + // Include packages marked with `private: true` includePrivate?: boolean, + + // Force include the rn-tester package. Special case of a private package + // that we version and depend on in fbsource. + forceIncludeRNTester?: boolean, }>; export type PackageInfo = { @@ -48,13 +55,17 @@ export type ProjectInfo = { */ /** - * Locates monrepo packages and returns a mapping of package names to their - * metadata. Considers Yarn workspaces under `packages/`. + * Locates monorepo packages and returns a mapping of package names to their + * metadata. Considers Yarn workspaces under `packages/` and `private/`. */ async function getPackages( filter /*: PackagesFilter */, ) /*: Promise */ { - const {includeReactNative, includePrivate = false} = filter; + const { + includeReactNative, + includePrivate = false, + forceIncludeRNTester = false, + } = filter; const packagesEntries = await Promise.all( glob @@ -69,9 +80,12 @@ async function getPackages( ); return Object.fromEntries( - packagesEntries.filter( - ([_, {packageJson}]) => packageJson.private !== true || includePrivate, - ), + packagesEntries.filter(([_, {name, packageJson}]) => { + if (name === '@react-native/tester') { + return forceIncludeRNTester; + } + return packageJson.private !== true || includePrivate; + }), ); }