MCPcopy Create free account
hub / github.com/vercel/vercel / getEnvForPackageManager

Function getEnvForPackageManager

packages/build-utils/src/fs/run-user-scripts.ts:997–1092  ·  view source on GitHub ↗
({
  cliType,
  lockfileVersion,
  packageJsonPackageManager,
  env,
  packageJsonEngines,
  turboSupportsCorepackHome,
  projectCreatedAt,
}: {
  cliType: CliType;
  lockfileVersion: number | undefined;
  packageJsonPackageManager?: string | undefined;
  env: { [x: string]: string | undefined };
  packageJsonEngines?: PackageJson.Engines;
  turboSupportsCorepackHome?: boolean | undefined;
  projectCreatedAt?: number | undefined;
})

Source from the content-addressed store, hash-verified

995 * versions.
996 */
997export function getEnvForPackageManager({
998 cliType,
999 lockfileVersion,
1000 packageJsonPackageManager,
1001 env,
1002 packageJsonEngines,
1003 turboSupportsCorepackHome,
1004 projectCreatedAt,
1005}: {
1006 cliType: CliType;
1007 lockfileVersion: number | undefined;
1008 packageJsonPackageManager?: string | undefined;
1009 env: { [x: string]: string | undefined };
1010 packageJsonEngines?: PackageJson.Engines;
1011 turboSupportsCorepackHome?: boolean | undefined;
1012 projectCreatedAt?: number | undefined;
1013}) {
1014 const corepackEnabled = usingCorepack(
1015 env,
1016 packageJsonPackageManager,
1017 turboSupportsCorepackHome
1018 );
1019
1020 const {
1021 detectedLockfile,
1022 detectedPackageManager,
1023 path: newPath,
1024 } = getPathOverrideForPackageManager({
1025 cliType,
1026 lockfileVersion,
1027 corepackPackageManager: packageJsonPackageManager,
1028 corepackEnabled,
1029 packageJsonEngines,
1030 projectCreatedAt,
1031 });
1032
1033 if (corepackEnabled) {
1034 debug(
1035 `Detected corepack use for "${packageJsonPackageManager}". Not overriding package manager version.`
1036 );
1037 } else {
1038 debug(
1039 `Detected ${detectedPackageManager}. Added "${newPath}" to path. Based on assumed package manager "${cliType}", lockfile "${detectedLockfile}", and lockfileVersion "${lockfileVersion}"`
1040 );
1041 }
1042
1043 const newEnv: { [x: string]: string | undefined } = {
1044 ...env,
1045 };
1046
1047 const alreadyInPath = (newPath: string) => {
1048 const oldPath = env.PATH ?? '';
1049 return oldPath.split(path.delimiter).includes(newPath);
1050 };
1051
1052 if (newPath && !alreadyInPath(newPath)) {
1053 // Ensure that the binaries of the detected package manager are at the
1054 // beginning of the `$PATH`.

Callers 13

buildFunction · 0.90
buildFunction · 0.90
buildFunction · 0.90
buildFunction · 0.90
downloadInstallAndBundleFunction · 0.90
buildFunction · 0.90
buildFunction · 0.90
buildFunction · 0.90
downloadInstallAndBundleFunction · 0.90
runNpmInstallFunction · 0.85
runCustomInstallCommandFunction · 0.85

Calls 5

usingCorepackFunction · 0.85
alreadyInPathFunction · 0.85
debugFunction · 0.50
logMethod · 0.45

Tested by

no test coverage detected