diff --git a/scripts/release/build-commands/update-package-versions.js b/scripts/release/build-commands/update-package-versions.js index 3bc41a5370b..84b0212e827 100644 --- a/scripts/release/build-commands/update-package-versions.js +++ b/scripts/release/build-commands/update-package-versions.js @@ -20,7 +20,7 @@ const update = async ({cwd, dry, version}) => { await writeJson(packagePath, rootPackage, {spaces: 2}); // Update ReactVersion source file - const reactVersionPath = join(cwd, 'packages/shared/src/ReactVersion.js'); + const reactVersionPath = join(cwd, 'packages/shared/ReactVersion.js'); const reactVersion = readFileSync(reactVersionPath, 'utf8').replace( /module\.exports = '[^']+';/, `module.exports = '${version}';` @@ -42,8 +42,15 @@ const update = async ({cwd, dry, version}) => { } if (project !== 'react') { - json.peerDependencies.react = `^${version}`; + const peerVersion = json.peerDependencies.react.replace('^', ''); + + // Release engineers can manually update minor and bugfix versions, + // But we should ensure that major versions always match. + if (semver.major(version) !== semver.major(peerVersion)) { + json.peerDependencies.react = `^${semver.major(version)}.0.0`; + } } + await writeJson(path, json, {spaces: 2}); }; await Promise.all(projects.map(updateProjectPackage));