Home / Function/ run() — react Function Reference

run() — react Function Reference

Architecture documentation for the run() function in publish-to-npm.js from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  f6a8d582_15e6_3216_b1d5_2480c9daf577["run()"]
  13cb3145_98f1_abc5_cea3_6a1465366deb["publish-to-npm.js"]
  f6a8d582_15e6_3216_b1d5_2480c9daf577 -->|defined in| 13cb3145_98f1_abc5_cea3_6a1465366deb
  style f6a8d582_15e6_3216_b1d5_2480c9daf577 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

scripts/release/publish-commands/publish-to-npm.js lines 12–98

const run = async ({cwd, dry, tags, ci}, packageName, otp) => {
  const packagePath = join(cwd, 'build/node_modules', packageName);
  const {version} = readJsonSync(join(packagePath, 'package.json'));

  // Check if this package version has already been published.
  // If so we might be resuming from a previous run.
  // We could infer this by comparing the build-info.json,
  // But for now the easiest way is just to ask if this is expected.
  const {status} = spawnSync('npm', ['view', `${packageName}@${version}`]);
  const packageExists = status === 0;
  if (packageExists) {
    console.log(
      theme`{package ${packageName}} {version ${version}} has already been published.`
    );
    if (!ci) {
      await confirm('Is this expected?');
    }
  } else {
    console.log(
      theme`{spinnerSuccess ✓} Publishing {package ${packageName}}${dry ? ' (dry-run)' : ''}`
    );

    // Publish the package and tag it.
    if (!dry) {
      if (!ci) {
        await exec(`npm publish --tag=${tags[0]} --otp=${otp}`, {
          cwd: packagePath,
        });
        console.log(theme.command(`  cd ${packagePath}`));
        console.log(
          theme.command(`  npm publish --tag=${tags[0]} --otp=${otp}`)
        );
      } else {
        await exec(`npm publish --tag=${tags[0]}`, {
          cwd: packagePath,
        });
        console.log(theme.command(`  cd ${packagePath}`));
        console.log(theme.command(`  npm publish --tag=${tags[0]}`));
      }
    }

    for (let j = 1; j < tags.length; j++) {
      if (!dry) {
        if (!ci) {
          await exec(
            `npm dist-tag add ${packageName}@${version} ${tags[j]} --otp=${otp}`,
            {cwd: packagePath}
          );
          console.log(
            theme.command(
              `  npm dist-tag add ${packageName}@${version} ${tags[j]} --otp=${otp}`
            )
          );
        } else {
          await exec(`npm dist-tag add ${packageName}@${version} ${tags[j]}`, {
            cwd: packagePath,
          });
          console.log(
            theme.command(
              `  npm dist-tag add ${packageName}@${version} ${tags[j]}`
            )
          );
        }
      }
    }

    if (tags.includes('untagged')) {
      // npm doesn't let us publish without a tag at all,
      // so for one-off publishes we clean it up ourselves.
      if (!dry) {
        if (!ci) {
          await exec(`npm dist-tag rm ${packageName} untagged --otp=${otp}`);
          console.log(
            theme.command(
              `  npm dist-tag rm ${packageName} untagged --otp=${otp}`
            )
          );
        } else {
          await exec(`npm dist-tag rm ${packageName} untagged`);
          console.log(
            theme.command(`  npm dist-tag rm ${packageName} untagged`)

Domain

Subdomains

Frequently Asked Questions

What does run() do?
run() is a function in the react codebase, defined in scripts/release/publish-commands/publish-to-npm.js.
Where is run() defined?
run() is defined in scripts/release/publish-commands/publish-to-npm.js at line 12.

Analyze Your Own Codebase

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

Try Supermodel Free