1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 'use strict';
- const path = require('path');
- const pathKey = require('path-key');
-
- const npmRunPath = options => {
- options = {
- cwd: process.cwd(),
- path: process.env[pathKey()],
- execPath: process.execPath,
- ...options
- };
-
- let previous;
- let cwdPath = path.resolve(options.cwd);
- const result = [];
-
- while (previous !== cwdPath) {
- result.push(path.join(cwdPath, 'node_modules/.bin'));
- previous = cwdPath;
- cwdPath = path.resolve(cwdPath, '..');
- }
-
- // Ensure the running `node` binary is used
- const execPathDir = path.resolve(options.cwd, options.execPath, '..');
- result.push(execPathDir);
-
- return result.concat(options.path).join(path.delimiter);
- };
-
- module.exports = npmRunPath;
- // TODO: Remove this for the next major release
- module.exports.default = npmRunPath;
-
- module.exports.env = options => {
- options = {
- env: process.env,
- ...options
- };
-
- const env = {...options.env};
- const path = pathKey({env});
-
- options.path = env[path];
- env[path] = module.exports(options);
-
- return env;
- };
|