UNPKG

823 BJavaScriptView Raw
1'use strict';
2var pkg = require('./pkg');
3
4/* @private
5 *
6 * constructs a set of all dependencies recursively
7 *
8 * @method depsFor
9 * @param {String} name of package to assemble unique deps for
10 * @param {String} dir (optional) path to begin resolving from
11 * @return {Array} a unique set of all deps
12 */
13module.exports = function depsFor(name, dir) {
14 var dependencies = [];
15 var visited = Object.create(null);
16
17 (function again(name, dir) {
18 var thePackage = pkg(name, dir);
19 var key = thePackage.name + thePackage.version + thePackage.baseDir;
20
21 if (visited[key]) { return; }
22 visited[key] = true;
23
24 dependencies.push(thePackage);
25
26 return Object.keys(thePackage.dependencies || {}).forEach(function(dep) {
27 again(dep, thePackage.baseDir);
28 });
29 }(name, dir));
30
31 return dependencies;
32};
33