Skip to content

Commit 0c38d76

Browse files
authored
fix(cli): allow pre-release package manager ranges (#4242)
fix: include prerelease versions in package manager version check
1 parent 2be22fd commit 0c38d76

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

packages/api/cli/spec/util/check-system.spec.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,29 @@ describe('checkPackageManager', () => {
132132
},
133133
);
134134

135+
it('should accept prerelease versions within the supported range', async () => {
136+
vi.mocked(resolvePackageManager).mockResolvedValue({
137+
executable: 'pnpm',
138+
install: 'add',
139+
dev: '--dev',
140+
exact: '--exact',
141+
});
142+
vi.mocked(spawnPackageManager).mockImplementation((_pm, args) => {
143+
if (args?.join(' ') === 'config get node-linker') {
144+
return Promise.resolve('hoisted');
145+
} else if (args?.join(' ') === 'config get hoist-pattern') {
146+
return Promise.resolve('undefined');
147+
} else if (args?.join(' ') === 'config get public-hoist-pattern') {
148+
return Promise.resolve('undefined');
149+
} else if (args?.join(' ') === '--version') {
150+
return Promise.resolve('11.0.0-beta.1');
151+
} else {
152+
throw new Error('Unexpected command');
153+
}
154+
});
155+
await expect(checkPackageManager()).resolves.not.toThrow();
156+
});
157+
135158
// resolvePackageManager optionally returns a `version` if `npm_config_user_agent` was used to
136159
// resolve the package manager being used.
137160
it('should not shell out to child process if version was already parsed via npm_config_user_agent', async () => {

packages/api/cli/src/util/check-system.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export async function checkPackageManager() {
119119
`Could not check ${pm.executable} version "${version}", assuming incompatible`,
120120
);
121121
}
122-
if (!semver.satisfies(version, range)) {
122+
if (!semver.satisfies(version, range, { includePrerelease: true })) {
123123
throw new Error(
124124
`Incompatible version of ${pm.executable} detected: "${version}" must be in range ${range}`,
125125
);

0 commit comments

Comments
 (0)