Skip to content

Commit e4e365f

Browse files
authored
chore(cli): integrate cli wizard only with storybook-plugin >=1 (#6765)
* chore(cli): integrate cli wizard only with storybook-plugin >=1 * chore:
1 parent 5db6268 commit e4e365f

5 files changed

Lines changed: 21 additions & 3 deletions

File tree

packages/cli/src/_test_/task-add.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ vi.mock('../wizard/init/steps', () => ({
3333
],
3434
promptAddCapabilities: vi.fn().mockResolvedValue({ toInstall: [], toConfigure: [] }),
3535
promptCustomPackages: vi.fn().mockResolvedValue([]),
36+
withVersionRanges: (packages: string[]) => packages,
3637
}));
3738

3839
import { readFile } from 'node:fs/promises';

packages/cli/src/_test_/task-init.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ vi.mock('../wizard/init/steps', () => ({
4949
needsStencilConfig: vi.fn().mockReturnValue(false),
5050
promptMonorepo: vi.fn().mockResolvedValue(false),
5151
promptWorkspaceCoreName: vi.fn().mockResolvedValue('core'),
52+
withVersionRanges: (packages: string[]) => packages,
5253
}));
5354
vi.mock('../wizard/init/apply', () => ({
5455
applyPackageJsonFields: vi.fn().mockResolvedValue(undefined),

packages/cli/src/task-add.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
type KnownIntegration,
1515
promptAddCapabilities,
1616
promptCustomPackages,
17+
withVersionRanges,
1718
} from './wizard/init/steps.js';
1819
import { defaultProjectConfig, detectWorkspaceRoot, toProjectConfig } from './wizard/project.js';
1920
import { printSplash } from './wizard/splash.js';
@@ -93,7 +94,7 @@ export async function taskAdd(packages: string[], strictConfig?: ValidatedConfig
9394
} else {
9495
const s = p.spinner();
9596
s.start(`Installing ${packagesToInstall.join(', ')}`);
96-
await addDevDependency(packagesToInstall, { cwd, silent: true });
97+
await addDevDependency(withVersionRanges(packagesToInstall), { cwd, silent: true });
9798
s.stop('Installed');
9899
}
99100
}

packages/cli/src/task-init.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
promptOutputs,
3333
promptProjectName,
3434
promptWorkspaceCoreName,
35+
withVersionRanges,
3536
} from './wizard/init/steps.js';
3637
import {
3738
defaultProjectConfig,
@@ -145,7 +146,7 @@ export async function taskInit(
145146
const pkgs = selectedIntegrations.map((i) => i.package);
146147
s3.start(`Installing ${pkgs.join(', ')}`);
147148
// Integration packages (e.g. output target plugins) are deps of the core package
148-
await addDevDependency(pkgs, { cwd: coreDir, silent: true });
149+
await addDevDependency(withVersionRanges(pkgs), { cwd: coreDir, silent: true });
149150
s3.stop('Integrations installed');
150151
}
151152

@@ -248,7 +249,7 @@ async function addCapabilities(cwd: string, strictConfig?: ValidatedConfig): Pro
248249
const s = p.spinner();
249250
const pkgs = toInstall.map((i) => i.package);
250251
s.start(`Installing ${pkgs.join(', ')}`);
251-
await addDevDependency(pkgs, { cwd, silent: true });
252+
await addDevDependency(withVersionRanges(pkgs), { cwd, silent: true });
252253
s.stop('Dependencies installed');
253254
}
254255

packages/cli/src/wizard/init/steps.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ export interface KnownIntegration {
1515
requiresStencilConfig?: true;
1616
/** When true, this integration publishes its own package and benefits from a monorepo workspace. */
1717
needsWorkspace?: true;
18+
/** Semver range appended (as `package@range`) when installing this integration. */
19+
versionRange?: string;
1820
}
1921

2022
/** Well-known integrations the CLI can offer before any packages are installed. */
@@ -56,6 +58,7 @@ export const KNOWN_INTEGRATIONS: KnownIntegration[] = [
5658
displayName: 'Storybook',
5759
description: 'Component development & documentation',
5860
group: 'Tooling',
61+
versionRange: '>=1.0.0-0',
5962
},
6063

6164
// Framework integrations
@@ -92,6 +95,17 @@ export const KNOWN_INTEGRATIONS: KnownIntegration[] = [
9295
},
9396
];
9497

98+
const versionRangeByPackage = new Map(
99+
KNOWN_INTEGRATIONS.filter((i) => i.versionRange).map((i) => [i.package, i.versionRange!]),
100+
);
101+
102+
export function withVersionRanges(packages: string[]): string[] {
103+
return packages.map((pkg) => {
104+
const range = versionRangeByPackage.get(pkg);
105+
return range ? `${pkg}@${range}` : pkg;
106+
});
107+
}
108+
95109
export async function promptOutputs(): Promise<OutputKey[]> {
96110
const picks = await p.multiselect<OutputKey>({
97111
message: 'Outputs:',

0 commit comments

Comments
 (0)