|
|
|
module.exports = installedDeep
|
|
|
|
|
|
|
|
var npm = require("../../npm.js")
|
|
|
|
, readInstalled = require("read-installed")
|
|
|
|
|
|
|
|
function installedDeep (opts, cb) {
|
|
|
|
var local
|
|
|
|
, global
|
|
|
|
if (npm.config.get("global")) local = [], next()
|
|
|
|
else readInstalled(npm.prefix, npm.config.get("depth"), function (er, data) {
|
|
|
|
local = getNames(data || {})
|
|
|
|
next()
|
|
|
|
})
|
|
|
|
readInstalled(npm.config.get("prefix"), npm.config.get("depth"), function (er, data) {
|
|
|
|
global = getNames(data || {})
|
|
|
|
next()
|
|
|
|
})
|
|
|
|
|
|
|
|
function getNames_ (d, n) {
|
|
|
|
if (d.realName && n) {
|
|
|
|
if (n[d.realName]) return n
|
|
|
|
n[d.realName] = true
|
|
|
|
}
|
|
|
|
if (!n) n = {}
|
|
|
|
Object.keys(d.dependencies || {}).forEach(function (dep) {
|
|
|
|
getNames_(d.dependencies[dep], n)
|
|
|
|
})
|
|
|
|
return n
|
|
|
|
}
|
|
|
|
function getNames (d) {
|
|
|
|
return Object.keys(getNames_(d))
|
|
|
|
}
|
|
|
|
|
|
|
|
function next () {
|
|
|
|
if (!local || !global) return
|
|
|
|
if (!npm.config.get("global")) {
|
|
|
|
global = global.map(function (g) {
|
|
|
|
return [g, "-g"]
|
|
|
|
})
|
|
|
|
}
|
|
|
|
var names = local.concat(global)
|
|
|
|
return cb(null, names)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|