Add --tag option to upgrade script

This commit is contained in:
Tom Coleman 2022-12-03 11:59:56 +11:00
parent 585edb6434
commit 5bc63f881b
2 changed files with 18 additions and 2 deletions

View File

@ -81,6 +81,7 @@ program
.option('-N --use-npm', 'Use NPM to install dependencies (deprecated)')
.option('-y --yes', 'Skip prompting the user')
.option('-n --dry-run', 'Only check for upgrades, do not install')
.option('-t --tag <tag>', 'Upgrade to a certain npm dist-tag (e.g. next, prerelease)')
.option('-p --prerelease', 'Upgrade to the pre-release packages')
.option('-s --skip-check', 'Skip postinstall version and automigration checks')
.action((options: UpgradeOptions) => upgrade(options));

View File

@ -136,6 +136,7 @@ export const addExtraFlags = (
};
export interface UpgradeOptions {
tag: string;
prerelease: boolean;
skipCheck: boolean;
useNpm: boolean;
@ -146,6 +147,7 @@ export interface UpgradeOptions {
}
export const doUpgrade = async ({
tag,
prerelease,
skipCheck,
useNpm,
@ -161,13 +163,26 @@ export const doUpgrade = async ({
commandLog(`Checking for latest versions of '@storybook/*' packages`);
if (!options.disableTelemetry) {
telemetry('upgrade', { prerelease });
telemetry('upgrade', { prerelease, tag });
}
if (tag && prerelease) {
throw new Error(
`Cannot set both --tag and --prerelease. Use --tag next to get the latest prereleae`
);
}
let target = 'latest';
if (prerelease) {
target = 'greatest';
} else if (tag) {
target = `@${tag}`;
}
let flags = [];
if (!dryRun) flags.push('--upgrade');
flags.push('--target');
flags.push(prerelease ? 'greatest' : 'latest');
flags.push(target);
flags = addExtraFlags(EXTRA_FLAGS, flags, packageManager.retrievePackageJson());
const check = spawnSync('npx', ['npm-check-updates@latest', '/storybook/', ...flags], {
stdio: 'pipe',