node-version-utils
Version:
Utilities for running commands on a specific version of node by installed path
1 lines • 3.42 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":["spawnOptions","isWindows","process","platform","test","env","OSTYPE","NODE","startsNPM","startsWithFn","startsPath","installPath","options","PATH_KEY","pathKey","processEnv","npm_config_binroot","path","join","npm_config_root","npm_config_man","npm_config_prefix","npm_node_execpath","key","length","undefined","NODE_EXE","prepend","cwd"],"mappings":";;;;+BAaA;;;eAAwBA;;;2DAbP;iEACG;wEACA;mEACK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzB,IAAMC,YAAYC,QAAQC,QAAQ,KAAK,WAAW,kBAAkBC,IAAI,CAACF,QAAQG,GAAG,CAACC,MAAM;AAC3F,IAAMC,OAAON,YAAY,aAAa;AAEtC,IAAMO,YAAYC,IAAAA,qBAAY,EAAC;AAC/B,IAAMC,aAAaD,IAAAA,qBAAY,EAAC;AAIjB,SAAST,aAAaW,WAAmB;QAAEC,UAAAA,iEAAkB,CAAC;IAC3E,IAAMC,WAAWC,IAAAA,mBAAO;IACxB,IAAMC,aAAab,QAAQG,GAAG;IAC9B,IAAMA,MAAM,CAAC;IACbA,IAAIW,kBAAkB,GAAGf,YAAYU,cAAcM,aAAI,CAACC,IAAI,CAACP,aAAa;IAC1EN,IAAIc,eAAe,GAAGlB,YAAYU,cAAcM,aAAI,CAACC,IAAI,CAACP,aAAa;IACvEN,IAAIe,cAAc,GAAGnB,YAAYU,cAAcM,aAAI,CAACC,IAAI,CAACP,aAAa;IACtEN,IAAIgB,iBAAiB,GAAGV;IACxBN,IAAIiB,iBAAiB,GAAGL,aAAI,CAACC,IAAI,CAACb,IAAIW,kBAAkB,EAAET;IAE1D,6EAA6E;IAC7E,IAAK,IAAMgB,OAAOR,WAAY;QAC5B,2CAA2C;QAC3C,IAAIQ,IAAIC,MAAM,GAAG,KAAKhB,UAAUe,MAAM;QACtC,IAAIA,IAAIC,MAAM,KAAK,KAAKd,WAAWa,QAAQA,QAAQV,UAAU;QAC7DR,GAAG,CAACkB,IAAI,GAAGR,UAAU,CAACQ,IAAI;IAC5B;IAEA,gBAAgB;IAChB,IAAIlB,IAAIE,IAAI,KAAKkB,WAAWpB,IAAIE,IAAI,GAAGF,IAAIiB,iBAAiB;IAC5D,IAAIjB,IAAIqB,QAAQ,KAAKD,WAAWpB,IAAIqB,QAAQ,GAAGrB,IAAIiB,iBAAiB;IAEpE,2DAA2D;IAC3DjB,GAAG,CAACQ,SAAS,GAAGc,IAAAA,0BAAO,EAACtB,GAAG,CAACQ,SAAS,IAAI,IAAIR,IAAIW,kBAAkB;IACnE,OAAO,wCAAKJ;QAASgB,KAAK1B,QAAQ0B,GAAG;QAAIvB,KAAAA;;AAC3C"}