Skip to content

Commit eed599a

Browse files
authored
Merge pull request #13759 from phated/phated/fix-semver-ranges
CLI: Fix handling of version ranges in dependency checks
2 parents 8958e84 + 1a3196a commit eed599a

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

lib/cli/src/project_types.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
import { lt, gte } from '@storybook/semver';
1+
import { validRange, minVersion } from '@storybook/semver';
2+
3+
function ltMajor(versionRange: string, major: number) {
4+
// Uses validRange to avoid a throw from minVersion if an invalid range gets passed
5+
return validRange(versionRange) && minVersion(versionRange).major < major;
6+
}
7+
8+
function eqMajor(versionRange: string, major: number) {
9+
// Uses validRange to avoid a throw from minVersion if an invalid range gets passed
10+
return validRange(versionRange) && minVersion(versionRange).major === major;
11+
}
212

313
// Should match @storybook/<framework>
414
export type SupportedFrameworks =
@@ -118,8 +128,8 @@ export const supportedTemplates: TemplateConfiguration[] = [
118128
// The Vue template only works with Vue or Nuxt under v3
119129
// In a future update, a new Vue3 template will be added
120130
dependencies: {
121-
vue: (version) => lt(version, '3.0.0'),
122-
nuxt: (version) => lt(version, '3.0.0'),
131+
vue: (versionRange) => ltMajor(versionRange, 3),
132+
nuxt: (versionRange) => ltMajor(versionRange, 3),
123133
},
124134
matcherFunction: ({ dependencies }) => {
125135
return dependencies.some(Boolean);
@@ -249,9 +259,9 @@ export const unsupportedTemplate: TemplateConfiguration = {
249259
preset: ProjectType.UNSUPPORTED,
250260
dependencies: {
251261
// TODO(blaine): Remove when we support Vue 3
252-
vue: (version) => version === 'next' || gte(version, '3.0.0'),
262+
vue: (versionRange) => versionRange === 'next' || eqMajor(versionRange, 3),
253263
// TODO(blaine): Remove when we support Vue 3
254-
nuxt: (version) => gte(version, '3.0.0'),
264+
nuxt: (versionRange) => eqMajor(versionRange, 3),
255265
},
256266
matcherFunction: ({ dependencies }) => {
257267
return dependencies.some(Boolean);

0 commit comments

Comments
 (0)