@vercel/build-utils 8.3.7 → 8.3.8
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 +8 -0
- package/dist/fs/run-user-scripts.d.ts +4 -2
- package/dist/fs/run-user-scripts.js +31 -17
- package/dist/index.js +65 -51
- package/dist/types.d.ts +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# @vercel/build-utils
|
2
2
|
|
3
|
+
## 8.3.8
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- Limit `package.json#packageManager` parsing to concrete versions ([#12025](https://github.com/vercel/vercel/pull/12025))
|
8
|
+
|
9
|
+
- Catch PNPM_UNSUPPORTED_ENGINE when corepack is enabled and throw a more helpful error ([#12017](https://github.com/vercel/vercel/pull/12017))
|
10
|
+
|
3
11
|
## 8.3.7
|
4
12
|
|
5
13
|
### Patch Changes
|
@@ -82,7 +82,7 @@ export declare function runNpmInstall(destPath: string, args?: string[], spawnOp
|
|
82
82
|
* Prepares the input environment based on the used package manager and lockfile
|
83
83
|
* versions.
|
84
84
|
*/
|
85
|
-
export declare function getEnvForPackageManager({ cliType, lockfileVersion, packageJsonPackageManager, nodeVersion, env, }: {
|
85
|
+
export declare function getEnvForPackageManager({ cliType, lockfileVersion, packageJsonPackageManager, nodeVersion, env, packageJsonEngines, }: {
|
86
86
|
cliType: CliType;
|
87
87
|
lockfileVersion: number | undefined;
|
88
88
|
packageJsonPackageManager?: string | undefined;
|
@@ -90,6 +90,7 @@ export declare function getEnvForPackageManager({ cliType, lockfileVersion, pack
|
|
90
90
|
env: {
|
91
91
|
[x: string]: string | undefined;
|
92
92
|
};
|
93
|
+
packageJsonEngines?: PackageJson.Engines;
|
93
94
|
}): {
|
94
95
|
[x: string]: string | undefined;
|
95
96
|
};
|
@@ -97,12 +98,13 @@ export declare function getEnvForPackageManager({ cliType, lockfileVersion, pack
|
|
97
98
|
* Helper to get the binary paths that link to the used package manager.
|
98
99
|
* Note: Make sure it doesn't contain any `console.log` calls.
|
99
100
|
*/
|
100
|
-
export declare function getPathOverrideForPackageManager({ cliType, lockfileVersion, corepackPackageManager, corepackEnabled, }: {
|
101
|
+
export declare function getPathOverrideForPackageManager({ cliType, lockfileVersion, corepackPackageManager, corepackEnabled, packageJsonEngines, }: {
|
101
102
|
cliType: CliType;
|
102
103
|
lockfileVersion: number | undefined;
|
103
104
|
corepackPackageManager: string | undefined;
|
104
105
|
nodeVersion: NodeVersion | undefined;
|
105
106
|
corepackEnabled?: boolean;
|
107
|
+
packageJsonEngines?: PackageJson.Engines;
|
106
108
|
}): {
|
107
109
|
/**
|
108
110
|
* Which lockfile was detected.
|
@@ -369,7 +369,8 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
|
|
369
369
|
lockfileVersion,
|
370
370
|
packageJsonPackageManager: packageJson?.packageManager,
|
371
371
|
nodeVersion,
|
372
|
-
env
|
372
|
+
env,
|
373
|
+
packageJsonEngines: packageJson?.engines
|
373
374
|
});
|
374
375
|
let commandArgs;
|
375
376
|
const isPotentiallyBrokenNpm = cliType === "npm" && (nodeVersion?.major === 16 || opts.env.PATH?.includes("/node16/bin-npm7")) && !args.includes("--legacy-peer-deps") && spawnOpts?.env?.ENABLE_EXPERIMENTAL_COREPACK !== "1";
|
@@ -421,7 +422,8 @@ function getEnvForPackageManager({
|
|
421
422
|
lockfileVersion,
|
422
423
|
packageJsonPackageManager,
|
423
424
|
nodeVersion,
|
424
|
-
env
|
425
|
+
env,
|
426
|
+
packageJsonEngines
|
425
427
|
}) {
|
426
428
|
const corepackEnabled = usingCorepack(env, packageJsonPackageManager);
|
427
429
|
const {
|
@@ -433,7 +435,8 @@ function getEnvForPackageManager({
|
|
433
435
|
lockfileVersion,
|
434
436
|
corepackPackageManager: packageJsonPackageManager,
|
435
437
|
nodeVersion,
|
436
|
-
corepackEnabled
|
438
|
+
corepackEnabled,
|
439
|
+
packageJsonEngines
|
437
440
|
});
|
438
441
|
if (corepackEnabled) {
|
439
442
|
(0, import_debug.default)(
|
@@ -516,7 +519,8 @@ function getPathOverrideForPackageManager({
|
|
516
519
|
cliType,
|
517
520
|
lockfileVersion,
|
518
521
|
corepackPackageManager,
|
519
|
-
corepackEnabled = true
|
522
|
+
corepackEnabled = true,
|
523
|
+
packageJsonEngines
|
520
524
|
}) {
|
521
525
|
const detectedPackageManger = detectPackageManager(cliType, lockfileVersion);
|
522
526
|
if (!corepackPackageManager || !corepackEnabled) {
|
@@ -525,7 +529,8 @@ function getPathOverrideForPackageManager({
|
|
525
529
|
if (!validateCorepackPackageManager(
|
526
530
|
cliType,
|
527
531
|
lockfileVersion,
|
528
|
-
corepackPackageManager
|
532
|
+
corepackPackageManager,
|
533
|
+
packageJsonEngines?.pnpm
|
529
534
|
)) {
|
530
535
|
console.warn(
|
531
536
|
`WARN [package-manager-warning-1] Detected lockfile "${lockfileVersion}" which is not compatible with the intended corepack package manager "${corepackPackageManager}". Update your lockfile or change to a compatible corepack version.`
|
@@ -533,7 +538,7 @@ function getPathOverrideForPackageManager({
|
|
533
538
|
}
|
534
539
|
return NO_OVERRIDE;
|
535
540
|
}
|
536
|
-
function validateCorepackPackageManager(cliType, lockfileVersion, corepackPackageManager) {
|
541
|
+
function validateCorepackPackageManager(cliType, lockfileVersion, corepackPackageManager, enginesPnpmVersionRange) {
|
537
542
|
const validatedCorepackPackageManager = validateVersionSpecifier(
|
538
543
|
corepackPackageManager
|
539
544
|
);
|
@@ -549,16 +554,22 @@ function validateCorepackPackageManager(cliType, lockfileVersion, corepackPackag
|
|
549
554
|
);
|
550
555
|
return false;
|
551
556
|
}
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
557
|
+
if (cliType === "pnpm" && enginesPnpmVersionRange) {
|
558
|
+
const pnpmWithinEngineRange = (0, import_semver.satisfies)(
|
559
|
+
validatedCorepackPackageManager.packageVersion,
|
560
|
+
enginesPnpmVersionRange
|
561
|
+
);
|
562
|
+
if (!pnpmWithinEngineRange) {
|
563
|
+
throw new Error(
|
564
|
+
`The version of pnpm specified in package.json#packageManager (${validatedCorepackPackageManager.packageVersion}) must satisfy the version range in package.json#engines.pnpm (${enginesPnpmVersionRange}).`
|
565
|
+
);
|
566
|
+
}
|
567
|
+
}
|
568
|
+
if (lockfileVersion) {
|
558
569
|
return validLockfileForPackageManager(
|
559
570
|
cliType,
|
560
571
|
lockfileVersion,
|
561
|
-
|
572
|
+
validatedCorepackPackageManager.packageVersion
|
562
573
|
);
|
563
574
|
} else {
|
564
575
|
return true;
|
@@ -578,12 +589,13 @@ function validateVersionSpecifier(version) {
|
|
578
589
|
if (!after) {
|
579
590
|
return void 0;
|
580
591
|
}
|
581
|
-
|
592
|
+
const packageVersion = (0, import_semver.parse)(after);
|
593
|
+
if (!packageVersion) {
|
582
594
|
return void 0;
|
583
595
|
}
|
584
596
|
return {
|
585
597
|
packageName: before,
|
586
|
-
|
598
|
+
packageVersion
|
587
599
|
};
|
588
600
|
}
|
589
601
|
function detectPackageManager(cliType, lockfileVersion) {
|
@@ -684,7 +696,8 @@ async function runCustomInstallCommand({
|
|
684
696
|
lockfileVersion,
|
685
697
|
packageJsonPackageManager: packageJson?.packageManager,
|
686
698
|
nodeVersion,
|
687
|
-
env: spawnOpts?.env || {}
|
699
|
+
env: spawnOpts?.env || {},
|
700
|
+
packageJsonEngines: packageJson?.engines
|
688
701
|
});
|
689
702
|
(0, import_debug.default)(`Running with $PATH:`, env?.PATH || "");
|
690
703
|
await execCommand(installCommand, {
|
@@ -715,7 +728,8 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
|
|
715
728
|
lockfileVersion,
|
716
729
|
packageJsonPackageManager: packageJson?.packageManager,
|
717
730
|
nodeVersion: void 0,
|
718
|
-
env: (0, import_clone_env.cloneEnv)(process.env, spawnOpts?.env)
|
731
|
+
env: (0, import_clone_env.cloneEnv)(process.env, spawnOpts?.env),
|
732
|
+
packageJsonEngines: packageJson?.engines
|
719
733
|
})
|
720
734
|
};
|
721
735
|
if (cliType === "npm") {
|
package/dist/index.js
CHANGED
@@ -9994,9 +9994,9 @@ var require_minimatch = __commonJS({
|
|
9994
9994
|
throw new TypeError("pattern is too long");
|
9995
9995
|
}
|
9996
9996
|
};
|
9997
|
-
Minimatch.prototype.parse =
|
9997
|
+
Minimatch.prototype.parse = parse3;
|
9998
9998
|
var SUBPARSE = {};
|
9999
|
-
function
|
9999
|
+
function parse3(pattern, isSub) {
|
10000
10000
|
assertValidPattern(pattern);
|
10001
10001
|
var options = this.options;
|
10002
10002
|
if (pattern === "**") {
|
@@ -13197,8 +13197,8 @@ var require_semver = __commonJS({
|
|
13197
13197
|
}
|
13198
13198
|
}
|
13199
13199
|
var i;
|
13200
|
-
exports2.parse =
|
13201
|
-
function
|
13200
|
+
exports2.parse = parse3;
|
13201
|
+
function parse3(version, options) {
|
13202
13202
|
if (!options || typeof options !== "object") {
|
13203
13203
|
options = {
|
13204
13204
|
loose: !!options,
|
@@ -13226,12 +13226,12 @@ var require_semver = __commonJS({
|
|
13226
13226
|
}
|
13227
13227
|
exports2.valid = valid;
|
13228
13228
|
function valid(version, options) {
|
13229
|
-
var v =
|
13229
|
+
var v = parse3(version, options);
|
13230
13230
|
return v ? v.version : null;
|
13231
13231
|
}
|
13232
13232
|
exports2.clean = clean;
|
13233
13233
|
function clean(version, options) {
|
13234
|
-
var s =
|
13234
|
+
var s = parse3(version.trim().replace(/^[=v]+/, ""), options);
|
13235
13235
|
return s ? s.version : null;
|
13236
13236
|
}
|
13237
13237
|
exports2.SemVer = SemVer2;
|
@@ -13441,8 +13441,8 @@ var require_semver = __commonJS({
|
|
13441
13441
|
if (eq(version1, version2)) {
|
13442
13442
|
return null;
|
13443
13443
|
} else {
|
13444
|
-
var v1 =
|
13445
|
-
var v2 =
|
13444
|
+
var v1 = parse3(version1);
|
13445
|
+
var v2 = parse3(version2);
|
13446
13446
|
var prefix = "";
|
13447
13447
|
if (v1.prerelease.length || v2.prerelease.length) {
|
13448
13448
|
prefix = "pre";
|
@@ -13639,10 +13639,10 @@ var require_semver = __commonJS({
|
|
13639
13639
|
var rangeTmp;
|
13640
13640
|
if (this.operator === "") {
|
13641
13641
|
rangeTmp = new Range(comp.value, options);
|
13642
|
-
return
|
13642
|
+
return satisfies2(this.value, rangeTmp, options);
|
13643
13643
|
} else if (comp.operator === "") {
|
13644
13644
|
rangeTmp = new Range(this.value, options);
|
13645
|
-
return
|
13645
|
+
return satisfies2(comp.semver, rangeTmp, options);
|
13646
13646
|
}
|
13647
13647
|
var sameDirectionIncreasing = (this.operator === ">=" || this.operator === ">") && (comp.operator === ">=" || comp.operator === ">");
|
13648
13648
|
var sameDirectionDecreasing = (this.operator === "<=" || this.operator === "<") && (comp.operator === "<=" || comp.operator === "<");
|
@@ -13951,8 +13951,8 @@ var require_semver = __commonJS({
|
|
13951
13951
|
}
|
13952
13952
|
return true;
|
13953
13953
|
}
|
13954
|
-
exports2.satisfies =
|
13955
|
-
function
|
13954
|
+
exports2.satisfies = satisfies2;
|
13955
|
+
function satisfies2(version, range, options) {
|
13956
13956
|
try {
|
13957
13957
|
range = new Range(range, options);
|
13958
13958
|
} catch (er) {
|
@@ -14080,7 +14080,7 @@ var require_semver = __commonJS({
|
|
14080
14080
|
default:
|
14081
14081
|
throw new TypeError('Must provide a hilo val of "<" or ">"');
|
14082
14082
|
}
|
14083
|
-
if (
|
14083
|
+
if (satisfies2(version, range, options)) {
|
14084
14084
|
return false;
|
14085
14085
|
}
|
14086
14086
|
for (var i2 = 0; i2 < range.set.length; ++i2) {
|
@@ -14112,7 +14112,7 @@ var require_semver = __commonJS({
|
|
14112
14112
|
}
|
14113
14113
|
exports2.prerelease = prerelease;
|
14114
14114
|
function prerelease(version, options) {
|
14115
|
-
var parsed =
|
14115
|
+
var parsed = parse3(version, options);
|
14116
14116
|
return parsed && parsed.prerelease.length ? parsed.prerelease : null;
|
14117
14117
|
}
|
14118
14118
|
exports2.intersects = intersects3;
|
@@ -14133,7 +14133,7 @@ var require_semver = __commonJS({
|
|
14133
14133
|
if (match == null) {
|
14134
14134
|
return null;
|
14135
14135
|
}
|
14136
|
-
return
|
14136
|
+
return parse3(match[1] + "." + (match[2] || "0") + "." + (match[3] || "0"));
|
14137
14137
|
}
|
14138
14138
|
}
|
14139
14139
|
});
|
@@ -14201,7 +14201,7 @@ var require_parse = __commonJS({
|
|
14201
14201
|
}
|
14202
14202
|
return parsed;
|
14203
14203
|
}
|
14204
|
-
function
|
14204
|
+
function parse3(command, args, options) {
|
14205
14205
|
if (args && !Array.isArray(args)) {
|
14206
14206
|
options = args;
|
14207
14207
|
args = null;
|
@@ -14220,7 +14220,7 @@ var require_parse = __commonJS({
|
|
14220
14220
|
};
|
14221
14221
|
return options.shell ? parseShell(parsed) : parseNonShell(parsed);
|
14222
14222
|
}
|
14223
|
-
module2.exports =
|
14223
|
+
module2.exports = parse3;
|
14224
14224
|
}
|
14225
14225
|
});
|
14226
14226
|
|
@@ -14279,16 +14279,16 @@ var require_cross_spawn = __commonJS({
|
|
14279
14279
|
"../../node_modules/.pnpm/cross-spawn@6.0.5/node_modules/cross-spawn/index.js"(exports2, module2) {
|
14280
14280
|
"use strict";
|
14281
14281
|
var cp = require("child_process");
|
14282
|
-
var
|
14282
|
+
var parse3 = require_parse();
|
14283
14283
|
var enoent = require_enoent();
|
14284
14284
|
function spawn2(command, args, options) {
|
14285
|
-
const parsed =
|
14285
|
+
const parsed = parse3(command, args, options);
|
14286
14286
|
const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
|
14287
14287
|
enoent.hookChildProcess(spawned, parsed);
|
14288
14288
|
return spawned;
|
14289
14289
|
}
|
14290
14290
|
function spawnSync(command, args, options) {
|
14291
|
-
const parsed =
|
14291
|
+
const parsed = parse3(command, args, options);
|
14292
14292
|
const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
|
14293
14293
|
result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
|
14294
14294
|
return result;
|
@@ -14296,7 +14296,7 @@ var require_cross_spawn = __commonJS({
|
|
14296
14296
|
module2.exports = spawn2;
|
14297
14297
|
module2.exports.spawn = spawn2;
|
14298
14298
|
module2.exports.sync = spawnSync;
|
14299
|
-
module2.exports._parse =
|
14299
|
+
module2.exports._parse = parse3;
|
14300
14300
|
module2.exports._enoent = enoent;
|
14301
14301
|
}
|
14302
14302
|
});
|
@@ -14438,8 +14438,8 @@ var require_semver2 = __commonJS({
|
|
14438
14438
|
}
|
14439
14439
|
}
|
14440
14440
|
var i;
|
14441
|
-
exports2.parse =
|
14442
|
-
function
|
14441
|
+
exports2.parse = parse3;
|
14442
|
+
function parse3(version, options) {
|
14443
14443
|
if (!options || typeof options !== "object") {
|
14444
14444
|
options = {
|
14445
14445
|
loose: !!options,
|
@@ -14467,12 +14467,12 @@ var require_semver2 = __commonJS({
|
|
14467
14467
|
}
|
14468
14468
|
exports2.valid = valid;
|
14469
14469
|
function valid(version, options) {
|
14470
|
-
var v =
|
14470
|
+
var v = parse3(version, options);
|
14471
14471
|
return v ? v.version : null;
|
14472
14472
|
}
|
14473
14473
|
exports2.clean = clean;
|
14474
14474
|
function clean(version, options) {
|
14475
|
-
var s =
|
14475
|
+
var s = parse3(version.trim().replace(/^[=v]+/, ""), options);
|
14476
14476
|
return s ? s.version : null;
|
14477
14477
|
}
|
14478
14478
|
exports2.SemVer = SemVer2;
|
@@ -14704,8 +14704,8 @@ var require_semver2 = __commonJS({
|
|
14704
14704
|
if (eq(version1, version2)) {
|
14705
14705
|
return null;
|
14706
14706
|
} else {
|
14707
|
-
var v1 =
|
14708
|
-
var v2 =
|
14707
|
+
var v1 = parse3(version1);
|
14708
|
+
var v2 = parse3(version2);
|
14709
14709
|
var prefix = "";
|
14710
14710
|
if (v1.prerelease.length || v2.prerelease.length) {
|
14711
14711
|
prefix = "pre";
|
@@ -14915,13 +14915,13 @@ var require_semver2 = __commonJS({
|
|
14915
14915
|
return true;
|
14916
14916
|
}
|
14917
14917
|
rangeTmp = new Range(comp.value, options);
|
14918
|
-
return
|
14918
|
+
return satisfies2(this.value, rangeTmp, options);
|
14919
14919
|
} else if (comp.operator === "") {
|
14920
14920
|
if (comp.value === "") {
|
14921
14921
|
return true;
|
14922
14922
|
}
|
14923
14923
|
rangeTmp = new Range(this.value, options);
|
14924
|
-
return
|
14924
|
+
return satisfies2(comp.semver, rangeTmp, options);
|
14925
14925
|
}
|
14926
14926
|
var sameDirectionIncreasing = (this.operator === ">=" || this.operator === ">") && (comp.operator === ">=" || comp.operator === ">");
|
14927
14927
|
var sameDirectionDecreasing = (this.operator === "<=" || this.operator === "<") && (comp.operator === "<=" || comp.operator === "<");
|
@@ -15248,8 +15248,8 @@ var require_semver2 = __commonJS({
|
|
15248
15248
|
}
|
15249
15249
|
return true;
|
15250
15250
|
}
|
15251
|
-
exports2.satisfies =
|
15252
|
-
function
|
15251
|
+
exports2.satisfies = satisfies2;
|
15252
|
+
function satisfies2(version, range, options) {
|
15253
15253
|
try {
|
15254
15254
|
range = new Range(range, options);
|
15255
15255
|
} catch (er) {
|
@@ -15377,7 +15377,7 @@ var require_semver2 = __commonJS({
|
|
15377
15377
|
default:
|
15378
15378
|
throw new TypeError('Must provide a hilo val of "<" or ">"');
|
15379
15379
|
}
|
15380
|
-
if (
|
15380
|
+
if (satisfies2(version, range, options)) {
|
15381
15381
|
return false;
|
15382
15382
|
}
|
15383
15383
|
for (var i2 = 0; i2 < range.set.length; ++i2) {
|
@@ -15409,7 +15409,7 @@ var require_semver2 = __commonJS({
|
|
15409
15409
|
}
|
15410
15410
|
exports2.prerelease = prerelease;
|
15411
15411
|
function prerelease(version, options) {
|
15412
|
-
var parsed =
|
15412
|
+
var parsed = parse3(version, options);
|
15413
15413
|
return parsed && parsed.prerelease.length ? parsed.prerelease : null;
|
15414
15414
|
}
|
15415
15415
|
exports2.intersects = intersects3;
|
@@ -15446,7 +15446,7 @@ var require_semver2 = __commonJS({
|
|
15446
15446
|
if (match === null) {
|
15447
15447
|
return null;
|
15448
15448
|
}
|
15449
|
-
return
|
15449
|
+
return parse3(match[2] + "." + (match[3] || "0") + "." + (match[4] || "0"), options);
|
15450
15450
|
}
|
15451
15451
|
}
|
15452
15452
|
});
|
@@ -22090,7 +22090,8 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
|
|
22090
22090
|
lockfileVersion,
|
22091
22091
|
packageJsonPackageManager: packageJson?.packageManager,
|
22092
22092
|
nodeVersion,
|
22093
|
-
env
|
22093
|
+
env,
|
22094
|
+
packageJsonEngines: packageJson?.engines
|
22094
22095
|
});
|
22095
22096
|
let commandArgs;
|
22096
22097
|
const isPotentiallyBrokenNpm = cliType === "npm" && (nodeVersion?.major === 16 || opts.env.PATH?.includes("/node16/bin-npm7")) && !args.includes("--legacy-peer-deps") && spawnOpts?.env?.ENABLE_EXPERIMENTAL_COREPACK !== "1";
|
@@ -22142,7 +22143,8 @@ function getEnvForPackageManager({
|
|
22142
22143
|
lockfileVersion,
|
22143
22144
|
packageJsonPackageManager,
|
22144
22145
|
nodeVersion,
|
22145
|
-
env
|
22146
|
+
env,
|
22147
|
+
packageJsonEngines
|
22146
22148
|
}) {
|
22147
22149
|
const corepackEnabled = usingCorepack(env, packageJsonPackageManager);
|
22148
22150
|
const {
|
@@ -22154,7 +22156,8 @@ function getEnvForPackageManager({
|
|
22154
22156
|
lockfileVersion,
|
22155
22157
|
corepackPackageManager: packageJsonPackageManager,
|
22156
22158
|
nodeVersion,
|
22157
|
-
corepackEnabled
|
22159
|
+
corepackEnabled,
|
22160
|
+
packageJsonEngines
|
22158
22161
|
});
|
22159
22162
|
if (corepackEnabled) {
|
22160
22163
|
debug(
|
@@ -22237,7 +22240,8 @@ function getPathOverrideForPackageManager({
|
|
22237
22240
|
cliType,
|
22238
22241
|
lockfileVersion,
|
22239
22242
|
corepackPackageManager,
|
22240
|
-
corepackEnabled = true
|
22243
|
+
corepackEnabled = true,
|
22244
|
+
packageJsonEngines
|
22241
22245
|
}) {
|
22242
22246
|
const detectedPackageManger = detectPackageManager(cliType, lockfileVersion);
|
22243
22247
|
if (!corepackPackageManager || !corepackEnabled) {
|
@@ -22246,7 +22250,8 @@ function getPathOverrideForPackageManager({
|
|
22246
22250
|
if (!validateCorepackPackageManager(
|
22247
22251
|
cliType,
|
22248
22252
|
lockfileVersion,
|
22249
|
-
corepackPackageManager
|
22253
|
+
corepackPackageManager,
|
22254
|
+
packageJsonEngines?.pnpm
|
22250
22255
|
)) {
|
22251
22256
|
console.warn(
|
22252
22257
|
`WARN [package-manager-warning-1] Detected lockfile "${lockfileVersion}" which is not compatible with the intended corepack package manager "${corepackPackageManager}". Update your lockfile or change to a compatible corepack version.`
|
@@ -22254,7 +22259,7 @@ function getPathOverrideForPackageManager({
|
|
22254
22259
|
}
|
22255
22260
|
return NO_OVERRIDE;
|
22256
22261
|
}
|
22257
|
-
function validateCorepackPackageManager(cliType, lockfileVersion, corepackPackageManager) {
|
22262
|
+
function validateCorepackPackageManager(cliType, lockfileVersion, corepackPackageManager, enginesPnpmVersionRange) {
|
22258
22263
|
const validatedCorepackPackageManager = validateVersionSpecifier(
|
22259
22264
|
corepackPackageManager
|
22260
22265
|
);
|
@@ -22270,16 +22275,22 @@ function validateCorepackPackageManager(cliType, lockfileVersion, corepackPackag
|
|
22270
22275
|
);
|
22271
22276
|
return false;
|
22272
22277
|
}
|
22273
|
-
|
22274
|
-
|
22275
|
-
|
22276
|
-
|
22277
|
-
|
22278
|
-
|
22278
|
+
if (cliType === "pnpm" && enginesPnpmVersionRange) {
|
22279
|
+
const pnpmWithinEngineRange = (0, import_semver2.satisfies)(
|
22280
|
+
validatedCorepackPackageManager.packageVersion,
|
22281
|
+
enginesPnpmVersionRange
|
22282
|
+
);
|
22283
|
+
if (!pnpmWithinEngineRange) {
|
22284
|
+
throw new Error(
|
22285
|
+
`The version of pnpm specified in package.json#packageManager (${validatedCorepackPackageManager.packageVersion}) must satisfy the version range in package.json#engines.pnpm (${enginesPnpmVersionRange}).`
|
22286
|
+
);
|
22287
|
+
}
|
22288
|
+
}
|
22289
|
+
if (lockfileVersion) {
|
22279
22290
|
return validLockfileForPackageManager(
|
22280
22291
|
cliType,
|
22281
22292
|
lockfileVersion,
|
22282
|
-
|
22293
|
+
validatedCorepackPackageManager.packageVersion
|
22283
22294
|
);
|
22284
22295
|
} else {
|
22285
22296
|
return true;
|
@@ -22299,12 +22310,13 @@ function validateVersionSpecifier(version) {
|
|
22299
22310
|
if (!after) {
|
22300
22311
|
return void 0;
|
22301
22312
|
}
|
22302
|
-
|
22313
|
+
const packageVersion = (0, import_semver2.parse)(after);
|
22314
|
+
if (!packageVersion) {
|
22303
22315
|
return void 0;
|
22304
22316
|
}
|
22305
22317
|
return {
|
22306
22318
|
packageName: before,
|
22307
|
-
|
22319
|
+
packageVersion
|
22308
22320
|
};
|
22309
22321
|
}
|
22310
22322
|
function detectPackageManager(cliType, lockfileVersion) {
|
@@ -22405,7 +22417,8 @@ async function runCustomInstallCommand({
|
|
22405
22417
|
lockfileVersion,
|
22406
22418
|
packageJsonPackageManager: packageJson?.packageManager,
|
22407
22419
|
nodeVersion,
|
22408
|
-
env: spawnOpts?.env || {}
|
22420
|
+
env: spawnOpts?.env || {},
|
22421
|
+
packageJsonEngines: packageJson?.engines
|
22409
22422
|
});
|
22410
22423
|
debug(`Running with $PATH:`, env?.PATH || "");
|
22411
22424
|
await execCommand(installCommand, {
|
@@ -22436,7 +22449,8 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
|
|
22436
22449
|
lockfileVersion,
|
22437
22450
|
packageJsonPackageManager: packageJson?.packageManager,
|
22438
22451
|
nodeVersion: void 0,
|
22439
|
-
env: cloneEnv(process.env, spawnOpts?.env)
|
22452
|
+
env: cloneEnv(process.env, spawnOpts?.env),
|
22453
|
+
packageJsonEngines: packageJson?.engines
|
22440
22454
|
})
|
22441
22455
|
};
|
22442
22456
|
if (cliType === "npm") {
|
package/dist/types.d.ts
CHANGED