run() — react Function Reference
Architecture documentation for the run() function in update-stable-version-numbers.js from the react codebase.
Entity Profile
Dependency Diagram
graph TD 4b0a12e7_3f84_3e3d_0eae_7eddefefc8b5["run()"] 0f41998a_a6bb_53ca_2643_bae503c7b7ad["update-stable-version-numbers.js"] 4b0a12e7_3f84_3e3d_0eae_7eddefefc8b5 -->|defined in| 0f41998a_a6bb_53ca_2643_bae503c7b7ad style 4b0a12e7_3f84_3e3d_0eae_7eddefefc8b5 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
scripts/release/prepare-release-from-npm-commands/update-stable-version-numbers.js lines 12–164
const run = async ({cwd, packages, version, ci}, versionsMap) => {
const nodeModulesPath = join(cwd, 'build/node_modules');
// Cache all package JSONs for easy lookup below.
const sourcePackageJSONs = new Map();
for (let i = 0; i < packages.length; i++) {
const packageName = packages[i];
const sourcePackageJSON = await readJson(
join(cwd, 'packages', packageName, 'package.json')
);
sourcePackageJSONs.set(packageName, sourcePackageJSON);
}
const updateDependencies = async (targetPackageJSON, key) => {
const targetDependencies = targetPackageJSON[key];
if (targetDependencies) {
const sourceDependencies = sourcePackageJSONs.get(targetPackageJSON.name)[
key
];
for (let i = 0; i < packages.length; i++) {
const dependencyName = packages[i];
const targetDependency = targetDependencies[dependencyName];
if (targetDependency) {
// For example, say we're updating react-dom's dependency on scheduler.
// We compare source packages to determine what the new scheduler dependency constraint should be.
// To do this, we look at both the local version of the scheduler (e.g. 0.11.0),
// and the dependency constraint in the local version of react-dom (e.g. scheduler@^0.11.0).
const sourceDependencyVersion =
sourcePackageJSONs.get(dependencyName).version;
const sourceDependencyConstraint = sourceDependencies[dependencyName];
// If the source dependency's version and the constraint match,
// we will need to update the constraint to point at the dependency's new release version,
// (e.g. scheduler@^0.11.0 becomes scheduler@^0.12.0 when we release scheduler 0.12.0).
// Otherwise we leave the constraint alone (e.g. react@^16.0.0 doesn't change between releases).
// Note that in both cases, we must update the target package JSON,
// since "next" releases are all locked to the version (e.g. 0.0.0-0e526bcec-20210202).
if (
sourceDependencyVersion ===
sourceDependencyConstraint.replace(/^[\^\~]/, '')
) {
targetDependencies[dependencyName] =
sourceDependencyConstraint.replace(
sourceDependencyVersion,
versionsMap.get(dependencyName)
);
} else {
targetDependencies[dependencyName] = sourceDependencyConstraint;
}
}
}
}
};
// Update all package JSON versions and their dependencies/peerDependencies.
// This must be done in a way that respects semver constraints (e.g. 16.7.0, ^16.7.0, ^16.0.0).
// To do this, we use the dependencies defined in the source package JSONs,
// because the "next" dependencies have already been flattened to an exact match (e.g. 0.0.0-0e526bcec-20210202).
for (let i = 0; i < packages.length; i++) {
const packageName = packages[i];
const packageJSONPath = join(nodeModulesPath, packageName, 'package.json');
const packageJSON = await readJson(packageJSONPath);
packageJSON.version = versionsMap.get(packageName);
await updateDependencies(packageJSON, 'dependencies');
await updateDependencies(packageJSON, 'peerDependencies');
await writeJson(packageJSONPath, packageJSON, {spaces: 2});
}
clear();
// Print the map of versions and their dependencies for confirmation.
const printDependencies = (maybeDependency, label) => {
if (maybeDependency) {
for (let dependencyName in maybeDependency) {
if (packages.includes(dependencyName)) {
console.log(
theme`• {package ${dependencyName}} {version ${maybeDependency[dependencyName]}} {dimmed ${label}}`
Domain
Subdomains
Source
Frequently Asked Questions
What does run() do?
run() is a function in the react codebase, defined in scripts/release/prepare-release-from-npm-commands/update-stable-version-numbers.js.
Where is run() defined?
run() is defined in scripts/release/prepare-release-from-npm-commands/update-stable-version-numbers.js at line 12.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free