Files
react-native/scripts/releases/create-release-commit.js
T
Alex Hunt 89300acb9c Migrate Node.js builtin imports to node: scheme (#57611)
Summary:
Pull Request resolved: https://github.com/react/react-native/pull/57611

Directly follows D112733139 (Metro).

**Motivation**

- New Node builtins are *only* available under the prefix (e.g. `node:sqlite`), as this allows Node to introduce them without ecosystem-breaking changes, so this is the direction of travel and the only choice that'll allow consistency.
- Encouraging them and grouping them separately makes it easier to reason about a module's 3rd party dependencies.

Changelog: [Internal]

Reviewed By: robhogan

Differential Revision: D112803684

fbshipit-source-id: 40668d746a7151b3aa4800ff8af997902a18d198
2026-07-21 09:01:41 -07:00

83 lines
2.5 KiB
JavaScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
const {setVersion} = require('../releases/set-version');
const {
setStableHermesForReleaseBranch,
} = require('../releases/utils/hermes-utils');
const {getBranchName} = require('../releases/utils/scm-utils');
const {
writeReleaseAssetUrlsToDotSlashFiles,
} = require('../releases/write-dotslash-release-asset-urls');
const {parseVersion} = require('./utils/version-utils');
const {execSync} = require('node:child_process');
const yargs = require('yargs');
async function main() {
const argv = await yargs
.option('reactNativeVersion', {
describe: 'The new React Native version.',
type: 'string',
required: true,
})
.option('tagAsLatestRelease', {
describe:
'Whether the version should be published as the latest version on npm.',
type: 'boolean',
default: false,
})
.option('dryRun', {
description: 'Whether we should push the commit to github or not',
type: 'boolean',
default: true,
}).argv;
const buildType = 'release';
const version = argv.reactNativeVersion;
const latest = argv.tagAsLatestRelease;
const dryRun = argv.dryRun;
const branch = getBranchName();
console.info(`Running on branch: ${branch}`);
console.info('Validating version', version);
const {prerelease} = parseVersion(version, buildType);
const npmTag = latest ? 'latest' : prerelease ? 'next' : branch;
console.info('NPM tag:', npmTag);
console.info('Setting version for monorepo packages and react-native');
await setVersion(version, false); // version, skip-react-native
console.info('Set stable Hermes for release branch');
await setStableHermesForReleaseBranch();
console.info('Writing release asset URLs to DotSlash files');
await writeReleaseAssetUrlsToDotSlashFiles(version);
if (dryRun) {
console.info('Running in dry-run mode, skipping git commit');
console.info(
`git commit -a -m "Release ${version}" -m "#publish-packages-to-npm&${npmTag}"`,
);
console.info(`git tag -a v${version} -m "v${version}"`);
return;
}
console.info('Committing to git');
execSync(
`git commit -a -m "Release ${version}" -m "#publish-packages-to-npm&${npmTag}"`,
);
execSync(`git tag -a v${version} -m "v${version}"`);
}
if (require.main === module) {
void main();
}