@vercel/build-utils 8.2.1 → 8.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/fs/node-version.js +1 -1
- package/dist/fs/run-user-scripts.js +50 -3
- package/dist/index.js +51 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# @vercel/build-utils
|
2
2
|
|
3
|
+
## 8.2.2
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- Change node 16.x EOL for Vercel ([#11704](https://github.com/vercel/vercel/pull/11704))
|
8
|
+
|
9
|
+
- Improve error message and refactor ([#11706](https://github.com/vercel/vercel/pull/11706))
|
10
|
+
|
11
|
+
- [built-utils] Handle case of not having lockfile when corepack is enabled ([#11697](https://github.com/vercel/vercel/pull/11697))
|
12
|
+
|
3
13
|
## 8.2.1
|
4
14
|
|
5
15
|
### Patch Changes
|
package/dist/fs/node-version.js
CHANGED
@@ -252,7 +252,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
|
|
252
252
|
lockfilePath = bunLockPath;
|
253
253
|
lockfileVersion = 0;
|
254
254
|
} else {
|
255
|
-
cliType = "npm";
|
255
|
+
cliType = packageJson ? detectPackageManagerNameWithoutLockfile(packageJson) : "npm";
|
256
256
|
}
|
257
257
|
const packageJsonPath = pkgJsonPath || void 0;
|
258
258
|
return {
|
@@ -263,6 +263,32 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
|
|
263
263
|
packageJsonPath
|
264
264
|
};
|
265
265
|
}
|
266
|
+
function detectPackageManagerNameWithoutLockfile(packageJson) {
|
267
|
+
const packageJsonPackageManager = packageJson.packageManager;
|
268
|
+
if (usingCorepack(process.env, packageJsonPackageManager)) {
|
269
|
+
const corepackPackageManager = validateVersionSpecifier(
|
270
|
+
packageJsonPackageManager
|
271
|
+
);
|
272
|
+
switch (corepackPackageManager?.packageName) {
|
273
|
+
case "npm":
|
274
|
+
case "pnpm":
|
275
|
+
case "yarn":
|
276
|
+
case "bun":
|
277
|
+
return corepackPackageManager.packageName;
|
278
|
+
case void 0:
|
279
|
+
return "npm";
|
280
|
+
default:
|
281
|
+
throw new Error(
|
282
|
+
`Unknown package manager "${corepackPackageManager?.packageName}". Change your package.json "packageManager" field to a known package manager: npm, pnpm, yarn, bun.`
|
283
|
+
);
|
284
|
+
}
|
285
|
+
}
|
286
|
+
return "npm";
|
287
|
+
}
|
288
|
+
function usingCorepack(env, packageJsonPackageManager) {
|
289
|
+
const corepackFlagged = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
|
290
|
+
return corepackFlagged && Boolean(packageJsonPackageManager);
|
291
|
+
}
|
266
292
|
async function walkParentDirs({
|
267
293
|
base,
|
268
294
|
start,
|
@@ -391,8 +417,7 @@ function getEnvForPackageManager({
|
|
391
417
|
nodeVersion,
|
392
418
|
env
|
393
419
|
}) {
|
394
|
-
const
|
395
|
-
const corepackEnabled = corepackFlagged && Boolean(packageJsonPackageManager);
|
420
|
+
const corepackEnabled = usingCorepack(env, packageJsonPackageManager);
|
396
421
|
const {
|
397
422
|
detectedLockfile,
|
398
423
|
detectedPackageManager,
|
@@ -528,6 +553,28 @@ function getPathOverrideForPackageManager({
|
|
528
553
|
return no_override;
|
529
554
|
}
|
530
555
|
}
|
556
|
+
function validateVersionSpecifier(version) {
|
557
|
+
if (!version) {
|
558
|
+
return void 0;
|
559
|
+
}
|
560
|
+
const [before, after, ...extra] = version.split("@");
|
561
|
+
if (extra.length) {
|
562
|
+
return void 0;
|
563
|
+
}
|
564
|
+
if (!before) {
|
565
|
+
return void 0;
|
566
|
+
}
|
567
|
+
if (!after) {
|
568
|
+
return void 0;
|
569
|
+
}
|
570
|
+
if (!(0, import_semver.validRange)(after)) {
|
571
|
+
return void 0;
|
572
|
+
}
|
573
|
+
return {
|
574
|
+
packageName: before,
|
575
|
+
packageVersionRange: after
|
576
|
+
};
|
577
|
+
}
|
531
578
|
function getPathForPackageManager({
|
532
579
|
cliType,
|
533
580
|
lockfileVersion,
|
package/dist/index.js
CHANGED
@@ -21620,7 +21620,7 @@ var NODE_VERSIONS = [
|
|
21620
21620
|
major: 16,
|
21621
21621
|
range: "16.x",
|
21622
21622
|
runtime: "nodejs16.x",
|
21623
|
-
discontinueDate: /* @__PURE__ */ new Date("2025-
|
21623
|
+
discontinueDate: /* @__PURE__ */ new Date("2025-01-31")
|
21624
21624
|
},
|
21625
21625
|
{
|
21626
21626
|
major: 14,
|
@@ -21974,7 +21974,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
|
|
21974
21974
|
lockfilePath = bunLockPath;
|
21975
21975
|
lockfileVersion = 0;
|
21976
21976
|
} else {
|
21977
|
-
cliType = "npm";
|
21977
|
+
cliType = packageJson ? detectPackageManagerNameWithoutLockfile(packageJson) : "npm";
|
21978
21978
|
}
|
21979
21979
|
const packageJsonPath = pkgJsonPath || void 0;
|
21980
21980
|
return {
|
@@ -21985,6 +21985,32 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
|
|
21985
21985
|
packageJsonPath
|
21986
21986
|
};
|
21987
21987
|
}
|
21988
|
+
function detectPackageManagerNameWithoutLockfile(packageJson) {
|
21989
|
+
const packageJsonPackageManager = packageJson.packageManager;
|
21990
|
+
if (usingCorepack(process.env, packageJsonPackageManager)) {
|
21991
|
+
const corepackPackageManager = validateVersionSpecifier(
|
21992
|
+
packageJsonPackageManager
|
21993
|
+
);
|
21994
|
+
switch (corepackPackageManager?.packageName) {
|
21995
|
+
case "npm":
|
21996
|
+
case "pnpm":
|
21997
|
+
case "yarn":
|
21998
|
+
case "bun":
|
21999
|
+
return corepackPackageManager.packageName;
|
22000
|
+
case void 0:
|
22001
|
+
return "npm";
|
22002
|
+
default:
|
22003
|
+
throw new Error(
|
22004
|
+
`Unknown package manager "${corepackPackageManager?.packageName}". Change your package.json "packageManager" field to a known package manager: npm, pnpm, yarn, bun.`
|
22005
|
+
);
|
22006
|
+
}
|
22007
|
+
}
|
22008
|
+
return "npm";
|
22009
|
+
}
|
22010
|
+
function usingCorepack(env, packageJsonPackageManager) {
|
22011
|
+
const corepackFlagged = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
|
22012
|
+
return corepackFlagged && Boolean(packageJsonPackageManager);
|
22013
|
+
}
|
21988
22014
|
async function walkParentDirs({
|
21989
22015
|
base,
|
21990
22016
|
start,
|
@@ -22113,8 +22139,7 @@ function getEnvForPackageManager({
|
|
22113
22139
|
nodeVersion,
|
22114
22140
|
env
|
22115
22141
|
}) {
|
22116
|
-
const
|
22117
|
-
const corepackEnabled = corepackFlagged && Boolean(packageJsonPackageManager);
|
22142
|
+
const corepackEnabled = usingCorepack(env, packageJsonPackageManager);
|
22118
22143
|
const {
|
22119
22144
|
detectedLockfile,
|
22120
22145
|
detectedPackageManager,
|
@@ -22250,6 +22275,28 @@ function getPathOverrideForPackageManager({
|
|
22250
22275
|
return no_override;
|
22251
22276
|
}
|
22252
22277
|
}
|
22278
|
+
function validateVersionSpecifier(version) {
|
22279
|
+
if (!version) {
|
22280
|
+
return void 0;
|
22281
|
+
}
|
22282
|
+
const [before, after, ...extra] = version.split("@");
|
22283
|
+
if (extra.length) {
|
22284
|
+
return void 0;
|
22285
|
+
}
|
22286
|
+
if (!before) {
|
22287
|
+
return void 0;
|
22288
|
+
}
|
22289
|
+
if (!after) {
|
22290
|
+
return void 0;
|
22291
|
+
}
|
22292
|
+
if (!(0, import_semver2.validRange)(after)) {
|
22293
|
+
return void 0;
|
22294
|
+
}
|
22295
|
+
return {
|
22296
|
+
packageName: before,
|
22297
|
+
packageVersionRange: after
|
22298
|
+
};
|
22299
|
+
}
|
22253
22300
|
function getPathForPackageManager({
|
22254
22301
|
cliType,
|
22255
22302
|
lockfileVersion,
|