@vercel/build-utils 8.8.0 → 9.0.0

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @vercel/build-utils
2
2
 
3
+ ## 9.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - Change getPathOverrideForPackageManager() to use detectedLockfile argument ([#12813](https://github.com/vercel/vercel/pull/12813))
8
+
9
+ ### Patch Changes
10
+
11
+ - Refactor build-util usage to reuse detected lockfile ([#12813](https://github.com/vercel/vercel/pull/12813))
12
+
13
+ - add support for `images.qualities` ([#12813](https://github.com/vercel/vercel/pull/12813))
14
+
3
15
  ## 8.8.0
4
16
 
5
17
  ### Minor Changes
@@ -37,6 +37,11 @@ export interface ScanParentDirsResult {
37
37
  * `undefined` if not a Turborepo project.
38
38
  */
39
39
  turboSupportsCorepackHome?: boolean;
40
+ /**
41
+ * Name of the lockfile (`yarn.lock`, `package-lock.json`, ...) detected
42
+ * or `undefined` if no lockfile was detected.
43
+ */
44
+ detectedLockfile?: string;
40
45
  }
41
46
  export interface TraverseUpDirectoriesProps {
42
47
  /**
@@ -97,7 +102,7 @@ export declare function runNpmInstall(destPath: string, args?: string[], spawnOp
97
102
  * Prepares the input environment based on the used package manager and lockfile
98
103
  * versions.
99
104
  */
100
- export declare function getEnvForPackageManager({ cliType, lockfileVersion, packageJsonPackageManager, nodeVersion, env, packageJsonEngines, turboSupportsCorepackHome, }: {
105
+ export declare function getEnvForPackageManager({ cliType, lockfileVersion, packageJsonPackageManager, nodeVersion, env, packageJsonEngines, turboSupportsCorepackHome, detectedLockfile, }: {
101
106
  cliType: CliType;
102
107
  lockfileVersion: number | undefined;
103
108
  packageJsonPackageManager?: string | undefined;
@@ -107,6 +112,7 @@ export declare function getEnvForPackageManager({ cliType, lockfileVersion, pack
107
112
  };
108
113
  packageJsonEngines?: PackageJson.Engines;
109
114
  turboSupportsCorepackHome?: boolean | undefined;
115
+ detectedLockfile: string | undefined;
110
116
  }): {
111
117
  [x: string]: string | undefined;
112
118
  };
@@ -114,13 +120,14 @@ export declare function getEnvForPackageManager({ cliType, lockfileVersion, pack
114
120
  * Helper to get the binary paths that link to the used package manager.
115
121
  * Note: Make sure it doesn't contain any `console.log` calls.
116
122
  */
117
- export declare function getPathOverrideForPackageManager({ cliType, lockfileVersion, corepackPackageManager, corepackEnabled, packageJsonEngines, }: {
123
+ export declare function getPathOverrideForPackageManager({ cliType, lockfileVersion, corepackPackageManager, corepackEnabled, packageJsonEngines, detectedLockfile, }: {
118
124
  cliType: CliType;
119
125
  lockfileVersion: number | undefined;
120
126
  corepackPackageManager: string | undefined;
121
127
  nodeVersion: NodeVersion | undefined;
122
128
  corepackEnabled?: boolean;
123
129
  packageJsonEngines?: PackageJson.Engines;
130
+ detectedLockfile?: string;
124
131
  }): {
125
132
  /**
126
133
  * Which lockfile was detected.
@@ -136,24 +143,24 @@ export declare function getPathOverrideForPackageManager({ cliType, lockfileVers
136
143
  */
137
144
  path: string | undefined;
138
145
  };
139
- export declare function detectPackageManager(cliType: CliType, lockfileVersion: number | undefined): {
146
+ export declare function detectPackageManager(cliType: CliType, lockfileVersion: number | undefined, detectedLockfile: string | undefined): {
140
147
  path: string;
141
- detectedLockfile: string;
148
+ detectedLockfile: string | undefined;
142
149
  detectedPackageManager: string;
143
150
  pnpmVersionRange: string;
144
151
  } | {
145
152
  path: undefined;
146
- detectedLockfile: string;
153
+ detectedLockfile: string | undefined;
147
154
  detectedPackageManager: string;
148
155
  pnpmVersionRange: string;
149
156
  } | {
150
157
  path: string;
151
- detectedLockfile: string;
158
+ detectedLockfile: string | undefined;
152
159
  detectedPackageManager: string;
153
160
  pnpmVersionRange?: undefined;
154
161
  } | {
155
162
  path: undefined;
156
- detectedLockfile: string;
163
+ detectedLockfile: string | undefined;
157
164
  detectedPackageManager: string;
158
165
  pnpmVersionRange?: undefined;
159
166
  } | undefined;
@@ -162,13 +169,14 @@ export declare function detectPackageManager(cliType: CliType, lockfileVersion:
162
169
  * Note: Make sure it doesn't contain any `console.log` calls.
163
170
  * @deprecated use `getEnvForPackageManager` instead
164
171
  */
165
- export declare function getPathForPackageManager({ cliType, lockfileVersion, nodeVersion, env, }: {
172
+ export declare function getPathForPackageManager({ cliType, lockfileVersion, nodeVersion, env, detectedLockfile, }: {
166
173
  cliType: CliType;
167
174
  lockfileVersion: number | undefined;
168
175
  nodeVersion: NodeVersion | undefined;
169
176
  env: {
170
177
  [x: string]: string | undefined;
171
178
  };
179
+ detectedLockfile: string;
172
180
  }): {
173
181
  /**
174
182
  * Which lockfile was detected.
@@ -280,7 +280,6 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
280
280
  if (bunLock && hasYarnLock) {
281
281
  cliType = "bun";
282
282
  lockfilePath = bunLockPath;
283
- lockfileVersion = bunLockTextPath ? 1 : 0;
284
283
  } else if (hasYarnLock) {
285
284
  cliType = "yarn";
286
285
  lockfilePath = yarnLockPath;
@@ -295,7 +294,6 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
295
294
  } else if (bunLock) {
296
295
  cliType = "bun";
297
296
  lockfilePath = bunLockPath;
298
- lockfileVersion = bunLockTextPath ? 1 : 0;
299
297
  } else {
300
298
  cliType = detectPackageManagerNameWithoutLockfile(
301
299
  packageJsonPackageManager,
@@ -310,7 +308,8 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
310
308
  lockfilePath,
311
309
  lockfileVersion,
312
310
  packageJsonPath,
313
- turboSupportsCorepackHome
311
+ turboSupportsCorepackHome,
312
+ detectedLockfile: lockfilePath ? import_path.default.basename(lockfilePath) : void 0
314
313
  };
315
314
  }
316
315
  async function checkTurboSupportsCorepack(turboVersionRange, rootDir) {
@@ -436,7 +435,8 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
436
435
  packageJson,
437
436
  lockfileVersion,
438
437
  packageJsonPackageManager,
439
- turboSupportsCorepackHome
438
+ turboSupportsCorepackHome,
439
+ detectedLockfile
440
440
  } = await scanParentDirs(destPath, true);
441
441
  if (!packageJsonPath) {
442
442
  (0, import_debug.default)(
@@ -470,7 +470,8 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
470
470
  nodeVersion,
471
471
  env,
472
472
  packageJsonEngines: packageJson?.engines,
473
- turboSupportsCorepackHome
473
+ turboSupportsCorepackHome,
474
+ detectedLockfile
474
475
  });
475
476
  let commandArgs;
476
477
  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";
@@ -524,24 +525,22 @@ function getEnvForPackageManager({
524
525
  nodeVersion,
525
526
  env,
526
527
  packageJsonEngines,
527
- turboSupportsCorepackHome
528
+ turboSupportsCorepackHome,
529
+ detectedLockfile
528
530
  }) {
529
531
  const corepackEnabled = usingCorepack(
530
532
  env,
531
533
  packageJsonPackageManager,
532
534
  turboSupportsCorepackHome
533
535
  );
534
- const {
535
- detectedLockfile,
536
- detectedPackageManager,
537
- path: newPath
538
- } = getPathOverrideForPackageManager({
536
+ const { detectedPackageManager, path: newPath } = getPathOverrideForPackageManager({
539
537
  cliType,
540
538
  lockfileVersion,
541
539
  corepackPackageManager: packageJsonPackageManager,
542
540
  nodeVersion,
543
541
  corepackEnabled,
544
- packageJsonEngines
542
+ packageJsonEngines,
543
+ detectedLockfile
545
544
  });
546
545
  if (corepackEnabled) {
547
546
  (0, import_debug.default)(
@@ -625,9 +624,14 @@ function getPathOverrideForPackageManager({
625
624
  lockfileVersion,
626
625
  corepackPackageManager,
627
626
  corepackEnabled = true,
628
- packageJsonEngines
627
+ packageJsonEngines,
628
+ detectedLockfile
629
629
  }) {
630
- const detectedPackageManger = detectPackageManager(cliType, lockfileVersion);
630
+ const detectedPackageManger = detectPackageManager(
631
+ cliType,
632
+ lockfileVersion,
633
+ detectedLockfile
634
+ );
631
635
  if (!corepackPackageManager || !corepackEnabled) {
632
636
  if (cliType === "pnpm" && packageJsonEngines?.pnpm) {
633
637
  checkEnginesPnpmAgainstDetected(
@@ -718,7 +722,7 @@ function validateVersionSpecifier(version) {
718
722
  packageVersion
719
723
  };
720
724
  }
721
- function detectPackageManager(cliType, lockfileVersion) {
725
+ function detectPackageManager(cliType, lockfileVersion, detectedLockfile) {
722
726
  switch (cliType) {
723
727
  case "npm":
724
728
  return void 0;
@@ -727,21 +731,21 @@ function detectPackageManager(cliType, lockfileVersion) {
727
731
  case "pnpm 7":
728
732
  return {
729
733
  path: "/pnpm7/node_modules/.bin",
730
- detectedLockfile: "pnpm-lock.yaml",
734
+ detectedLockfile,
731
735
  detectedPackageManager: "pnpm@7.x",
732
736
  pnpmVersionRange: "7.x"
733
737
  };
734
738
  case "pnpm 8":
735
739
  return {
736
740
  path: "/pnpm8/node_modules/.bin",
737
- detectedLockfile: "pnpm-lock.yaml",
741
+ detectedLockfile,
738
742
  detectedPackageManager: "pnpm@8.x",
739
743
  pnpmVersionRange: "8.x"
740
744
  };
741
745
  case "pnpm 9":
742
746
  return {
743
747
  path: "/pnpm9/node_modules/.bin",
744
- detectedLockfile: "pnpm-lock.yaml",
748
+ detectedLockfile,
745
749
  detectedPackageManager: "pnpm@9.x",
746
750
  pnpmVersionRange: "9.x"
747
751
  };
@@ -749,7 +753,7 @@ function detectPackageManager(cliType, lockfileVersion) {
749
753
  return {
750
754
  // undefined because pnpm@6 is the current default in the build container
751
755
  path: void 0,
752
- detectedLockfile: "pnpm-lock.yaml",
756
+ detectedLockfile,
753
757
  detectedPackageManager: "pnpm@6.x",
754
758
  pnpmVersionRange: "6.x"
755
759
  };
@@ -759,13 +763,13 @@ function detectPackageManager(cliType, lockfileVersion) {
759
763
  case "bun":
760
764
  return {
761
765
  path: "/bun1",
762
- detectedLockfile: lockfileVersion === 0 ? "bun.lockb" : "bun.lock",
766
+ detectedLockfile,
763
767
  detectedPackageManager: "bun@1.x"
764
768
  };
765
769
  case "yarn":
766
770
  return {
767
771
  path: void 0,
768
- detectedLockfile: "yarn.lock",
772
+ detectedLockfile,
769
773
  detectedPackageManager: "yarn"
770
774
  };
771
775
  }
@@ -774,14 +778,16 @@ function getPathForPackageManager({
774
778
  cliType,
775
779
  lockfileVersion,
776
780
  nodeVersion,
777
- env
781
+ env,
782
+ detectedLockfile
778
783
  }) {
779
784
  const corepackEnabled = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
780
785
  let overrides = getPathOverrideForPackageManager({
781
786
  cliType,
782
787
  lockfileVersion,
783
788
  corepackPackageManager: void 0,
784
- nodeVersion
789
+ nodeVersion,
790
+ detectedLockfile
785
791
  });
786
792
  if (corepackEnabled) {
787
793
  overrides = NO_OVERRIDE;
@@ -816,7 +822,8 @@ async function runCustomInstallCommand({
816
822
  lockfileVersion,
817
823
  packageJson,
818
824
  packageJsonPackageManager,
819
- turboSupportsCorepackHome
825
+ turboSupportsCorepackHome,
826
+ detectedLockfile
820
827
  } = await scanParentDirs(destPath, true);
821
828
  const env = getEnvForPackageManager({
822
829
  cliType,
@@ -825,7 +832,8 @@ async function runCustomInstallCommand({
825
832
  nodeVersion,
826
833
  env: spawnOpts?.env || {},
827
834
  packageJsonEngines: packageJson?.engines,
828
- turboSupportsCorepackHome
835
+ turboSupportsCorepackHome,
836
+ detectedLockfile
829
837
  });
830
838
  (0, import_debug.default)(`Running with $PATH:`, env?.PATH || "");
831
839
  await execCommand(installCommand, {
@@ -841,7 +849,8 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
841
849
  cliType,
842
850
  lockfileVersion,
843
851
  packageJsonPackageManager,
844
- turboSupportsCorepackHome
852
+ turboSupportsCorepackHome,
853
+ detectedLockfile
845
854
  } = await scanParentDirs(destPath, true);
846
855
  const scriptName = getScriptName(
847
856
  packageJson,
@@ -861,7 +870,8 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
861
870
  nodeVersion: void 0,
862
871
  env: (0, import_clone_env.cloneEnv)(process.env, spawnOpts?.env),
863
872
  packageJsonEngines: packageJson?.engines,
864
- turboSupportsCorepackHome
873
+ turboSupportsCorepackHome,
874
+ detectedLockfile
865
875
  })
866
876
  };
867
877
  if (cliType === "npm") {