[build-utils] Improve no lockfile detection logic (#11706)

Two minor improvements missed from the review of https://github.com/vercel/vercel/pull/11697:

- [Include supported package manager names in error message](https://github.com/vercel/vercel/pull/11697#discussion_r1628382867)
- [Avoid `as` to improve type safety](https://github.com/vercel/vercel/pull/11697#discussion_r1628384789)
This commit is contained in:
Austin Merrick
2024-06-06 16:20:23 -07:00
committed by GitHub
parent fa9789a93e
commit 21444a38e5
2 changed files with 8 additions and 3 deletions

View File

@@ -0,0 +1,5 @@
---
'@vercel/build-utils': patch
---
Improve error message and refactor

View File

@@ -372,7 +372,7 @@ function detectPackageManagerNameWithoutLockfile(packageJson: PackageJson) {
const packageJsonPackageManager = packageJson.packageManager; const packageJsonPackageManager = packageJson.packageManager;
if (usingCorepack(process.env, packageJsonPackageManager)) { if (usingCorepack(process.env, packageJsonPackageManager)) {
const corepackPackageManager = validateVersionSpecifier( const corepackPackageManager = validateVersionSpecifier(
packageJsonPackageManager as string packageJsonPackageManager
); );
switch (corepackPackageManager?.packageName) { switch (corepackPackageManager?.packageName) {
case 'npm': case 'npm':
@@ -384,7 +384,7 @@ function detectPackageManagerNameWithoutLockfile(packageJson: PackageJson) {
return 'npm'; return 'npm';
default: default:
throw new Error( throw new Error(
`Unknown package manager "${corepackPackageManager?.packageName}". Change your package.json "packageManager" field to a known package manager.` `Unknown package manager "${corepackPackageManager?.packageName}". Change your package.json "packageManager" field to a known package manager: npm, pnpm, yarn, bun.`
); );
} }
} }
@@ -785,7 +785,7 @@ export function getPathOverrideForPackageManager({
} }
} }
function validateVersionSpecifier(version: string) { function validateVersionSpecifier(version?: string) {
if (!version) { if (!version) {
return undefined; return undefined;
} }