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
Source
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