Home / Function/ updatePackageVersions() — react Function Reference

updatePackageVersions() — react Function Reference

Architecture documentation for the updatePackageVersions() function in build-all-release-channels.js from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  8939a711_3ab0_2de0_0d1c_f6d01f0ba44d["updatePackageVersions()"]
  39121ebe_f6d4_878e_0797_7a6b417f5f9a["build-all-release-channels.js"]
  8939a711_3ab0_2de0_0d1c_f6d01f0ba44d -->|defined in| 39121ebe_f6d4_878e_0797_7a6b417f5f9a
  01896c6c_c39f_713c_b9f5_5c924e738cdc["processStable()"]
  01896c6c_c39f_713c_b9f5_5c924e738cdc -->|calls| 8939a711_3ab0_2de0_0d1c_f6d01f0ba44d
  07ae733a_8302_4852_ff9b_8b779bea6dc2["processExperimental()"]
  07ae733a_8302_4852_ff9b_8b779bea6dc2 -->|calls| 8939a711_3ab0_2de0_0d1c_f6d01f0ba44d
  style 8939a711_3ab0_2de0_0d1c_f6d01f0ba44d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

scripts/rollup/build-all-release-channels.js lines 402–459

function updatePackageVersions(
  modulesDir,
  versionsMap,
  defaultVersionIfNotFound,
  pinToExactVersion
) {
  for (const moduleName of fs.readdirSync(modulesDir)) {
    let version = versionsMap.get(moduleName);
    if (version === undefined) {
      // TODO: If the module is not in the version map, we should exclude it
      // from the build artifacts.
      version = defaultVersionIfNotFound;
    }
    const packageJSONPath = path.join(modulesDir, moduleName, 'package.json');
    const stats = fs.statSync(packageJSONPath);
    if (stats.isFile()) {
      const packageInfo = JSON.parse(fs.readFileSync(packageJSONPath));

      // Update version
      packageInfo.version = version;

      if (packageInfo.dependencies) {
        for (const dep of Object.keys(packageInfo.dependencies)) {
          const depVersion = versionsMap.get(dep);
          if (depVersion !== undefined) {
            packageInfo.dependencies[dep] = pinToExactVersion
              ? depVersion
              : '^' + depVersion;
          }
        }
      }
      if (packageInfo.peerDependencies) {
        if (
          !pinToExactVersion &&
          (moduleName === 'use-sync-external-store' ||
            moduleName === 'use-subscription')
        ) {
          // use-sync-external-store supports older versions of React, too, so
          // we don't override to the latest version. We should figure out some
          // better way to handle this.
          // TODO: Remove this special case.
        } else {
          for (const dep of Object.keys(packageInfo.peerDependencies)) {
            const depVersion = versionsMap.get(dep);
            if (depVersion !== undefined) {
              packageInfo.peerDependencies[dep] = pinToExactVersion
                ? depVersion
                : '^' + depVersion;
            }
          }
        }
      }

      // Write out updated package.json
      fs.writeFileSync(packageJSONPath, JSON.stringify(packageInfo, null, 2));
    }
  }
}

Domain

Subdomains

Frequently Asked Questions

What does updatePackageVersions() do?
updatePackageVersions() is a function in the react codebase, defined in scripts/rollup/build-all-release-channels.js.
Where is updatePackageVersions() defined?
updatePackageVersions() is defined in scripts/rollup/build-all-release-channels.js at line 402.
What calls updatePackageVersions()?
updatePackageVersions() is called by 2 function(s): processExperimental, processStable.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free