JezK
Edit File: execute-lifecycle-script.js.map
{"version":3,"file":"execute-lifecycle-script.js","names":["path","require","IGNORE_MANIFEST_KEYS","Set","IGNORE_CONFIG_KEYS","wrappersFolder","getWrappersFolder","config","fs","makeTempDir","makePortableProxyScript","process","execPath","proxyBasename","prependArguments","argv","INVALID_CHAR_REGEX","makeEnv","stage","cwd","env","NODE","INIT_CWD","customEnv","getOption","Object","assign","npm_lifecycle_event","npm_node_execpath","npm_execpath","mainModule","filename","production","NODE_ENV","npm_config_argv","JSON","stringify","remain","cooked","commandName","original","slice","maybeReadManifest","manifest","scripts","prototype","hasOwnProperty","call","npm_lifecycle_script","queue","length","pop","key","val","subKey","fullKey","filter","Boolean","join","has","push","cleanVal","String","indexOf","cleanKey","replace","keys","registries","yarn","npm","cleaned","Array","from","match","map","envKey","name","packageConfigPrefix","envPath","constants","ENV_PATH_KEY","pathParts","split","delimiter","unshift","dirname","getGlobalBinFolder","globalBin","registryFolders","registryFolder","binFolder","workspacesEnabled","workspaceRootFolder","linkFolder","versions","pnp","pnpFile","dynamicRequire","resolve","candidate","lockfileFolder","PNP_FILENAME","exists","pnpApi","packageLocator","findPackageLocator","packageInformation","getPackageInformation","packageDependencies","entries","reference","dependencyInformation","packageLocation","NODE_OPTIONS","executeLifecycleScript","cmd","isInteractive","onProgress","customShell","checkForGypIfNeeded","platform","fixCmdWinSlashes","stdio","detached","shell","child","spawn","stdout","command","checkGypPromise","paths","substr","Promise","_checkForGyp","reporter","all","dir","allChecks","some","info","lang","globalRun","MessageError","message","execFromManifest","pkg","execCommand","ProcessTermError","formattedError","EXIT_SIGNAL","EXIT_CODE"],"sourceRoot":"../../src","sources":["util/execute-lifecycle-script.js"],"sourcesContent":["/* @flow */\n\nimport type Config from '../config.js';\nimport {MessageError, ProcessTermError} from '../errors.js';\nimport * as constants from '../constants.js';\nimport * as child from './child.js';\nimport * as fs from './fs.js';\nimport {dynamicRequire} from './dynamic-require.js';\nimport {makePortableProxyScript} from './portable-script.js';\nimport {fixCmdWinSlashes} from './fix-cmd-win-slashes.js';\nimport {getBinFolder as getGlobalBinFolder, run as globalRun} from '../cli/commands/global.js';\n\nconst path = require('path');\n\nexport type LifecycleReturn = Promise<{\n cwd: string,\n command: string,\n stdout: string,\n}>;\n\nexport const IGNORE_MANIFEST_KEYS: Set<string> = new Set([\n 'readme',\n 'notice',\n 'licenseText',\n 'activationEvents',\n 'contributes',\n]);\n\n// We treat these configs as internal, thus not expose them to process.env.\n// This helps us avoid some gyp issues when building native modules.\n// See https://github.com/yarnpkg/yarn/issues/2286.\nconst IGNORE_CONFIG_KEYS = ['lastUpdateCheck'];\n\nlet wrappersFolder = null;\n\nexport async function getWrappersFolder(config: Config): Promise<string> {\n if (wrappersFolder) {\n return wrappersFolder;\n }\n\n wrappersFolder = await fs.makeTempDir();\n\n await makePortableProxyScript(process.execPath, wrappersFolder, {\n proxyBasename: 'node',\n });\n\n await makePortableProxyScript(process.execPath, wrappersFolder, {\n proxyBasename: 'yarn',\n prependArguments: [process.argv[1]],\n });\n\n return wrappersFolder;\n}\n\nconst INVALID_CHAR_REGEX = /\\W/g;\n\nexport async function makeEnv(\n stage: string,\n cwd: string,\n config: Config,\n): {\n [key: string]: string,\n} {\n const env = {\n NODE: process.execPath,\n INIT_CWD: process.cwd(),\n // This lets `process.env.NODE` to override our `process.execPath`.\n // This is a bit confusing but it is how `npm` was designed so we\n // try to be compatible with that.\n ...process.env,\n };\n\n // Merge in the `env` object specified in .yarnrc\n const customEnv = config.getOption('env');\n if (customEnv && typeof customEnv === 'object') {\n Object.assign(env, customEnv);\n }\n\n env.npm_lifecycle_event = stage;\n env.npm_node_execpath = env.NODE;\n env.npm_execpath = env.npm_execpath || (process.mainModule && process.mainModule.filename);\n\n // Set the env to production for npm compat if production mode.\n // https://github.com/npm/npm/blob/30d75e738b9cb7a6a3f9b50e971adcbe63458ed3/lib/utils/lifecycle.js#L336\n if (config.production) {\n env.NODE_ENV = 'production';\n }\n\n // Note: npm_config_argv environment variable contains output of nopt - command-line\n // parser used by npm. Since we use other parser, we just roughly emulate it's output. (See: #684)\n env.npm_config_argv = JSON.stringify({\n remain: [],\n cooked: config.commandName === 'run' ? [config.commandName, stage] : [config.commandName],\n original: process.argv.slice(2),\n });\n\n const manifest = await config.maybeReadManifest(cwd);\n if (manifest) {\n if (manifest.scripts && Object.prototype.hasOwnProperty.call(manifest.scripts, stage)) {\n env.npm_lifecycle_script = manifest.scripts[stage];\n }\n\n // add npm_package_*\n const queue = [['', manifest]];\n while (queue.length) {\n const [key, val] = queue.pop();\n if (typeof val === 'object') {\n for (const subKey in val) {\n const fullKey = [key, subKey].filter(Boolean).join('_');\n if (fullKey && fullKey[0] !== '_' && !IGNORE_MANIFEST_KEYS.has(fullKey)) {\n queue.push([fullKey, val[subKey]]);\n }\n }\n } else {\n let cleanVal = String(val);\n if (cleanVal.indexOf('\\n') >= 0) {\n cleanVal = JSON.stringify(cleanVal);\n }\n\n //replacing invalid chars with underscore\n const cleanKey = key.replace(INVALID_CHAR_REGEX, '_');\n\n env[`npm_package_${cleanKey}`] = cleanVal;\n }\n }\n }\n\n // add npm_config_* and npm_package_config_* from yarn config\n const keys: Set<string> = new Set([\n ...Object.keys(config.registries.yarn.config),\n ...Object.keys(config.registries.npm.config),\n ]);\n const cleaned = Array.from(keys)\n .filter(key => !key.match(/:_/) && IGNORE_CONFIG_KEYS.indexOf(key) === -1)\n .map(key => {\n let val = config.getOption(key);\n if (!val) {\n val = '';\n } else if (typeof val === 'number') {\n val = '' + val;\n } else if (typeof val !== 'string') {\n val = JSON.stringify(val);\n }\n\n if (val.indexOf('\\n') >= 0) {\n val = JSON.stringify(val);\n }\n return [key, val];\n });\n // add npm_config_*\n for (const [key, val] of cleaned) {\n const cleanKey = key.replace(/^_+/, '');\n const envKey = `npm_config_${cleanKey}`.replace(INVALID_CHAR_REGEX, '_');\n env[envKey] = val;\n }\n // add npm_package_config_*\n if (manifest && manifest.name) {\n const packageConfigPrefix = `${manifest.name}:`;\n for (const [key, val] of cleaned) {\n if (key.indexOf(packageConfigPrefix) !== 0) {\n continue;\n }\n const cleanKey = key.replace(/^_+/, '').replace(packageConfigPrefix, '');\n const envKey = `npm_package_config_${cleanKey}`.replace(INVALID_CHAR_REGEX, '_');\n env[envKey] = val;\n }\n }\n\n // split up the path\n const envPath = env[constants.ENV_PATH_KEY];\n const pathParts = envPath ? envPath.split(path.delimiter) : [];\n\n // Include node-gyp version that was bundled with the current Node.js version,\n // if available.\n pathParts.unshift(path.join(path.dirname(process.execPath), 'node_modules', 'npm', 'bin', 'node-gyp-bin'));\n pathParts.unshift(\n path.join(path.dirname(process.execPath), '..', 'lib', 'node_modules', 'npm', 'bin', 'node-gyp-bin'),\n );\n // Include node-gyp version from homebrew managed npm, if available.\n pathParts.unshift(\n path.join(path.dirname(process.execPath), '..', 'libexec', 'lib', 'node_modules', 'npm', 'bin', 'node-gyp-bin'),\n );\n\n // Add global bin folder if it is not present already, as some packages depend\n // on a globally-installed version of node-gyp.\n const globalBin = await getGlobalBinFolder(config, {});\n if (pathParts.indexOf(globalBin) === -1) {\n pathParts.unshift(globalBin);\n }\n\n // Add node_modules .bin folders to the PATH\n for (const registryFolder of config.registryFolders) {\n const binFolder = path.join(registryFolder, '.bin');\n if (config.workspacesEnabled && config.workspaceRootFolder) {\n pathParts.unshift(path.join(config.workspaceRootFolder, binFolder));\n }\n pathParts.unshift(path.join(config.linkFolder, binFolder));\n pathParts.unshift(path.join(cwd, binFolder));\n }\n\n let pnpFile;\n\n if (process.versions.pnp) {\n pnpFile = dynamicRequire.resolve('pnpapi');\n } else {\n const candidate = `${config.lockfileFolder}/${constants.PNP_FILENAME}`;\n if (await fs.exists(candidate)) {\n pnpFile = candidate;\n }\n }\n\n if (pnpFile) {\n const pnpApi = dynamicRequire(pnpFile);\n\n const packageLocator = pnpApi.findPackageLocator(`${cwd}/`);\n const packageInformation = pnpApi.getPackageInformation(packageLocator);\n\n for (const [name, reference] of packageInformation.packageDependencies.entries()) {\n const dependencyInformation = pnpApi.getPackageInformation({name, reference});\n\n if (!dependencyInformation || !dependencyInformation.packageLocation) {\n continue;\n }\n\n const binFolder = `${dependencyInformation.packageLocation}/.bin`;\n if (await fs.exists(binFolder)) {\n pathParts.unshift(binFolder);\n }\n }\n\n // Note that NODE_OPTIONS doesn't support any style of quoting its arguments at the moment\n // For this reason, it won't work if the user has a space inside its $PATH\n env.NODE_OPTIONS = env.NODE_OPTIONS || '';\n env.NODE_OPTIONS = `--require ${pnpFile} ${env.NODE_OPTIONS}`;\n }\n\n pathParts.unshift(await getWrappersFolder(config));\n\n // join path back together\n env[constants.ENV_PATH_KEY] = pathParts.join(path.delimiter);\n\n return env;\n}\n\nexport async function executeLifecycleScript({\n stage,\n config,\n cwd,\n cmd,\n isInteractive,\n onProgress,\n customShell,\n}: {\n stage: string,\n config: Config,\n cwd: string,\n cmd: string,\n isInteractive?: boolean,\n onProgress?: (chunk: Buffer | string) => void,\n customShell?: string,\n}): LifecycleReturn {\n const env = await makeEnv(stage, cwd, config);\n\n await checkForGypIfNeeded(config, cmd, env[constants.ENV_PATH_KEY].split(path.delimiter));\n\n if (process.platform === 'win32' && (!customShell || customShell === 'cmd')) {\n // handle windows run scripts starting with a relative path\n cmd = fixCmdWinSlashes(cmd);\n }\n\n // By default (non-interactive), pipe everything to the terminal and run child process detached\n // as long as it's not Windows (since windows does not have /dev/tty)\n let stdio = ['ignore', 'pipe', 'pipe'];\n let detached = process.platform !== 'win32';\n\n if (isInteractive) {\n stdio = 'inherit';\n detached = false;\n }\n\n const shell = customShell || true;\n const stdout = await child.spawn(cmd, [], {cwd, env, stdio, detached, shell}, onProgress);\n\n return {cwd, command: cmd, stdout};\n}\n\nexport default executeLifecycleScript;\n\nlet checkGypPromise: ?Promise<void> = null;\n/**\n * Special case: Some packages depend on node-gyp, but don't specify this in\n * their package.json dependencies. They assume that node-gyp is available\n * globally. We need to detect this case and show an error message.\n */\nfunction checkForGypIfNeeded(config: Config, cmd: string, paths: Array<string>): Promise<void> {\n if (cmd.substr(0, cmd.indexOf(' ')) !== 'node-gyp') {\n return Promise.resolve();\n }\n\n // Ensure this only runs once, rather than multiple times in parallel.\n if (!checkGypPromise) {\n checkGypPromise = _checkForGyp(config, paths);\n }\n return checkGypPromise;\n}\n\nasync function _checkForGyp(config: Config, paths: Array<string>): Promise<void> {\n const {reporter} = config;\n\n // Check every directory in the PATH\n const allChecks = await Promise.all(paths.map(dir => fs.exists(path.join(dir, 'node-gyp'))));\n if (allChecks.some(Boolean)) {\n // node-gyp is available somewhere\n return;\n }\n\n reporter.info(reporter.lang('packageRequiresNodeGyp'));\n\n try {\n await globalRun(config, reporter, {}, {}, ['add', 'node-gyp']);\n } catch (e) {\n throw new MessageError(reporter.lang('nodeGypAutoInstallFailed', e.message));\n }\n}\n\nexport async function execFromManifest(config: Config, commandName: string, cwd: string): Promise<void> {\n const pkg = await config.maybeReadManifest(cwd);\n if (!pkg || !pkg.scripts) {\n return;\n }\n\n const cmd: ?string = pkg.scripts[commandName];\n if (cmd) {\n await execCommand({stage: commandName, config, cmd, cwd, isInteractive: true});\n }\n}\n\nexport async function execCommand({\n stage,\n config,\n cmd,\n cwd,\n isInteractive,\n customShell,\n}: {\n stage: string,\n config: Config,\n cmd: string,\n cwd: string,\n isInteractive: boolean,\n customShell?: string,\n}): Promise<void> {\n const {reporter} = config;\n try {\n reporter.command(cmd);\n await executeLifecycleScript({stage, config, cwd, cmd, isInteractive, customShell});\n return Promise.resolve();\n } catch (err) {\n if (err instanceof ProcessTermError) {\n const formattedError = new ProcessTermError(\n err.EXIT_SIGNAL\n ? reporter.lang('commandFailedWithSignal', err.EXIT_SIGNAL)\n : reporter.lang('commandFailedWithCode', err.EXIT_CODE),\n );\n formattedError.EXIT_CODE = err.EXIT_CODE;\n formattedError.EXIT_SIGNAL = err.EXIT_SIGNAL;\n throw formattedError;\n } else {\n throw err;\n }\n }\n}\n"],"mappings":"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"}