node-version-utils
Version:
Utilities for running commands on a specific version of node by installed path
1 lines • 3.34 kB
Source Map (JSON)
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/node-version/node-version-utils/src/spawnOptions.ts"],"sourcesContent":["import path from 'path';\nimport pathKey from 'env-path-key';\nimport prepend from 'path-string-prepend';\nimport startsWithFn from './lib/startsWithFn';\n\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\nconst NODE = isWindows ? 'node.exe' : 'node';\n\nconst startsNPM = startsWithFn('npm_');\nconst startsPath = startsWithFn('path');\n\nimport type { ProcessEnv, SpawnOptions } from './types';\n\nexport default function spawnOptions(installPath: string, options: object = {}): SpawnOptions {\n const PATH_KEY = pathKey();\n const processEnv = process.env;\n const env = {} as ProcessEnv;\n env.npm_config_binroot = isWindows ? installPath : path.join(installPath, 'bin');\n env.npm_config_root = isWindows ? installPath : path.join(installPath, 'lib');\n env.npm_config_man = isWindows ? installPath : path.join(installPath, 'man');\n env.npm_config_prefix = installPath;\n env.npm_node_execpath = path.join(env.npm_config_binroot, NODE);\n\n // copy the environment not for npm and skip case-insesitive additional paths\n for (const key in processEnv) {\n // skip npm_ variants and non-matching path\n if (key.length > 4 && startsNPM(key)) continue;\n if (key.length === 4 && startsPath(key) && key !== PATH_KEY) continue;\n env[key] = processEnv[key];\n }\n\n // override node\n if (env.NODE !== undefined) env.NODE = env.npm_node_execpath;\n if (env.NODE_EXE !== undefined) env.NODE_EXE = env.npm_node_execpath;\n\n // put the path to node and npm at the front and remove nvs\n env[PATH_KEY] = prepend(env[PATH_KEY] || '', env.npm_config_binroot);\n return { ...options, cwd: process.cwd(), env } as SpawnOptions;\n}\n"],"names":["path","pathKey","prepend","startsWithFn","isWindows","process","platform","test","env","OSTYPE","NODE","startsNPM","startsPath","spawnOptions","installPath","options","PATH_KEY","processEnv","npm_config_binroot","join","npm_config_root","npm_config_man","npm_config_prefix","npm_node_execpath","key","length","undefined","NODE_EXE","cwd"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,aAAa,eAAe;AACnC,OAAOC,aAAa,sBAAsB;AAC1C,OAAOC,kBAAkB,qBAAqB;AAE9C,MAAMC,YAAYC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAC3F,MAAMC,OAAON,YAAY,aAAa;AAEtC,MAAMO,YAAYR,aAAa;AAC/B,MAAMS,aAAaT,aAAa;AAIhC,eAAe,SAASU,aAAaC,WAAmB,EAAEC,UAAkB,CAAC,CAAC;IAC5E,MAAMC,WAAWf;IACjB,MAAMgB,aAAaZ,QAAQG,GAAG;IAC9B,MAAMA,MAAM,CAAC;IACbA,IAAIU,kBAAkB,GAAGd,YAAYU,cAAcd,KAAKmB,IAAI,CAACL,aAAa;IAC1EN,IAAIY,eAAe,GAAGhB,YAAYU,cAAcd,KAAKmB,IAAI,CAACL,aAAa;IACvEN,IAAIa,cAAc,GAAGjB,YAAYU,cAAcd,KAAKmB,IAAI,CAACL,aAAa;IACtEN,IAAIc,iBAAiB,GAAGR;IACxBN,IAAIe,iBAAiB,GAAGvB,KAAKmB,IAAI,CAACX,IAAIU,kBAAkB,EAAER;IAE1D,6EAA6E;IAC7E,IAAK,MAAMc,OAAOP,WAAY;QAC5B,2CAA2C;QAC3C,IAAIO,IAAIC,MAAM,GAAG,KAAKd,UAAUa,MAAM;QACtC,IAAIA,IAAIC,MAAM,KAAK,KAAKb,WAAWY,QAAQA,QAAQR,UAAU;QAC7DR,GAAG,CAACgB,IAAI,GAAGP,UAAU,CAACO,IAAI;IAC5B;IAEA,gBAAgB;IAChB,IAAIhB,IAAIE,IAAI,KAAKgB,WAAWlB,IAAIE,IAAI,GAAGF,IAAIe,iBAAiB;IAC5D,IAAIf,IAAImB,QAAQ,KAAKD,WAAWlB,IAAImB,QAAQ,GAAGnB,IAAIe,iBAAiB;IAEpE,2DAA2D;IAC3Df,GAAG,CAACQ,SAAS,GAAGd,QAAQM,GAAG,CAACQ,SAAS,IAAI,IAAIR,IAAIU,kBAAkB;IACnE,OAAO;QAAE,GAAGH,OAAO;QAAEa,KAAKvB,QAAQuB,GAAG;QAAIpB;IAAI;AAC/C"}