UNPKG

766 BJavaScriptView Raw
1'use strict';
2const path = require('path');
3const pathKey = require('path-key');
4
5module.exports = opts => {
6 opts = Object.assign({
7 cwd: process.cwd(),
8 path: process.env[pathKey()]
9 }, opts);
10
11 let prev;
12 let pth = path.resolve(opts.cwd);
13 const ret = [];
14
15 while (prev !== pth) {
16 ret.push(path.join(pth, 'node_modules/.bin'));
17 prev = pth;
18 pth = path.resolve(pth, '..');
19 }
20
21 // ensure the running `node` binary is used
22 ret.push(path.dirname(process.execPath));
23
24 return ret.concat(opts.path).join(path.delimiter);
25};
26
27module.exports.env = opts => {
28 opts = Object.assign({
29 env: process.env
30 }, opts);
31
32 const env = Object.assign({}, opts.env);
33 const path = pathKey({env});
34
35 opts.path = env[path];
36 env[path] = module.exports(opts);
37
38 return env;
39};