function resolveAll (nodeModules, targets = Object.create(null), isExplicit) {
	return this::expand(({target, pkgJson, isProd = false}) => {
		// cancel when we get into a circular dependency
		if (target in targets) {
			log(`aborting due to circular dependency ${target}`)
			return EmptyObservable.create()
		}

		targets[target] = true // eslint-disable-line no-param-reassign

		// install devDependencies of entry dependency (project-level)
		const fields = (target === '..' && !isProd)
			? ENTRY_DEPENDENCY_FIELDS
			: DEPENDENCY_FIELDS

		log(`extracting ${fields} from ${target}`)

		const dependencies = parseDependencies(pkgJson, fields)

		return ArrayObservable.create(dependencies)
			::resolve(nodeModules, target, isExplicit)
	})
}
resolve all dependencies starting at the current working directory.
@param	{String} nodeModules - `node_modules` base directory.
@param	{Object} [targets=Object.create(null)] - resolved / active targets.
@param	{Boolean} isExplicit - whether the install command asks for an explicit install.
@return {Observable} - an observable sequence of resolved dependencies.