mirror of
https://github.com/storybookjs/storybook.git
synced 2025-04-08 05:21:48 +08:00
Merge pull request #26585 from storybookjs/yann/fix-installations-command
CLI: Throw an error when running upgrade command in incorrect cwd (cherry picked from commit 7b9e094bc0f6645c6e955d98036ad7aa9b3acf51)
This commit is contained in:
parent
f55cb5705f
commit
5149d0f64e
@ -210,4 +210,20 @@ describe('Helpers', () => {
|
||||
}).toThrowError(`Could not coerce ${invalidSemverString} into a semver.`);
|
||||
});
|
||||
});
|
||||
|
||||
describe('hasStorybookDependencies', () => {
|
||||
it(`should return true when any storybook dependency exists`, async () => {
|
||||
const result = await helpers.hasStorybookDependencies({
|
||||
getAllDependencies: async () => ({ storybook: 'x.y.z' }),
|
||||
} as unknown as JsPackageManager);
|
||||
expect(result).toEqual(true);
|
||||
});
|
||||
|
||||
it(`should return false when no storybook dependency exists`, async () => {
|
||||
const result = await helpers.hasStorybookDependencies({
|
||||
getAllDependencies: async () => ({ axios: 'x.y.z' }),
|
||||
} as unknown as JsPackageManager);
|
||||
expect(result).toEqual(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -296,3 +296,9 @@ export function coerceSemver(version: string) {
|
||||
invariant(coercedSemver != null, `Could not coerce ${version} into a semver.`);
|
||||
return coercedSemver;
|
||||
}
|
||||
|
||||
export async function hasStorybookDependencies(packageManager: JsPackageManager) {
|
||||
const currentPackageDeps = await packageManager.getAllDependencies();
|
||||
|
||||
return Object.keys(currentPackageDeps).some((dep) => dep.includes('storybook'));
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ vi.mock('@storybook/core-common', async (importOriginal) => {
|
||||
JsPackageManagerFactory: {
|
||||
getPackageManager: () => ({
|
||||
findInstallations: findInstallationsMock,
|
||||
getAllDependencies: async () => ({ storybook: '8.0.0' }),
|
||||
}),
|
||||
},
|
||||
versions: Object.keys(originalModule.versions).reduce(
|
||||
|
@ -4,6 +4,7 @@ import semver, { eq, lt, prerelease } from 'semver';
|
||||
import { logger } from '@storybook/node-logger';
|
||||
import { withTelemetry } from '@storybook/core-server';
|
||||
import {
|
||||
UpgradeStorybookInWrongWorkingDirectory,
|
||||
UpgradeStorybookToLowerVersionError,
|
||||
UpgradeStorybookToSameVersionError,
|
||||
UpgradeStorybookUnknownCurrentVersionError,
|
||||
@ -23,6 +24,7 @@ import {
|
||||
} from '@storybook/core-common';
|
||||
import { automigrate } from './automigrate/index';
|
||||
import { autoblock } from './autoblock/index';
|
||||
import { hasStorybookDependencies } from './helpers';
|
||||
|
||||
type Package = {
|
||||
package: string;
|
||||
@ -135,6 +137,9 @@ export const doUpgrade = async ({
|
||||
beforeVersion.startsWith('portal:') ||
|
||||
beforeVersion.startsWith('workspace:');
|
||||
|
||||
if (!(await hasStorybookDependencies(packageManager))) {
|
||||
throw new UpgradeStorybookInWrongWorkingDirectory();
|
||||
}
|
||||
if (!isCanary && lt(currentVersion, beforeVersion)) {
|
||||
throw new UpgradeStorybookToLowerVersionError({ beforeVersion, currentVersion });
|
||||
}
|
||||
|
@ -577,6 +577,20 @@ export class UpgradeStorybookUnknownCurrentVersionError extends StorybookError {
|
||||
}
|
||||
}
|
||||
|
||||
export class UpgradeStorybookInWrongWorkingDirectory extends StorybookError {
|
||||
readonly category = Category.CLI_UPGRADE;
|
||||
|
||||
readonly code = 6;
|
||||
|
||||
template() {
|
||||
return dedent`
|
||||
You are running the upgrade command in a CWD that does not contain Storybook dependencies.
|
||||
|
||||
Did you mean to run it in a different directory? Make sure the directory you run this command in contains a package.json with your Storybook dependencies.
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
export class NoStatsForViteDevError extends StorybookError {
|
||||
readonly category = Category.BUILDER_VITE;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user