You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1013 B
47 lines
1013 B
'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; |
|
};
|
|
|