diff --git a/code/lib/cli/src/upgrade.ts b/code/lib/cli/src/upgrade.ts index 5247977c3ba8..1d13c5a7f0c2 100644 --- a/code/lib/cli/src/upgrade.ts +++ b/code/lib/cli/src/upgrade.ts @@ -11,7 +11,7 @@ import { import chalk from 'chalk'; import dedent from 'ts-dedent'; import boxen from 'boxen'; -import type { PackageManagerName } from '@storybook/core-common'; +import type { JsPackageManager, PackageManagerName } from '@storybook/core-common'; import { JsPackageManagerFactory, isCorePackage, @@ -37,6 +37,18 @@ export const getStorybookVersion = (line: string) => { }; }; +const getInstalledStorybookVersion = async (packageManager: JsPackageManager) => { + const installations = await packageManager.findInstallations(['storybook', '@storybook/cli']); + if (!installations) { + return; + } + const cliVersion = installations.dependencies['@storybook/cli']?.[0].version; + if (cliVersion) { + return cliVersion; + } + return installations.dependencies['storybook']?.[0].version; +}; + const deprecatedPackages = [ { minVersion: '6.0.0-alpha.0', @@ -113,10 +125,8 @@ export const doUpgrade = async ({ }: UpgradeOptions) => { const packageManager = JsPackageManagerFactory.getPackageManager({ force: pkgMgr }); - // If we can't determine the existing version (Yarn PnP), fallback to v0.0.0 to not block the upgrade - const beforeVersion = - (await packageManager.findInstallations(['@storybook/cli']))?.dependencies['storybook']?.[0] - .version ?? '0.0.0'; + // If we can't determine the existing version fallback to v0.0.0 to not block the upgrade + const beforeVersion = (await getInstalledStorybookVersion(packageManager)) ?? '0.0.0'; const currentVersion = versions['@storybook/cli']; const isCanary = currentVersion.startsWith('0.0.0'); @@ -209,9 +219,7 @@ export const doUpgrade = async ({ automigrationResults = await automigrate({ dryRun, yes, packageManager: pkgMgr, configDir }); } if (!options.disableTelemetry) { - const afterVersion = (await packageManager.findInstallations(['@storybook/cli']))?.dependencies[ - '@storybook/cli' - ][0].version; + const afterVersion = await getInstalledStorybookVersion(packageManager); const { preCheckFailure, fixResults } = automigrationResults || {}; const automigrationTelemetry = { automigrationResults: preCheckFailure ? null : fixResults,