diff options
Diffstat (limited to 'deps/npm/lib/install/report-optional-failure.js')
-rw-r--r-- | deps/npm/lib/install/report-optional-failure.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/deps/npm/lib/install/report-optional-failure.js b/deps/npm/lib/install/report-optional-failure.js new file mode 100644 index 0000000000..41c7c535bd --- /dev/null +++ b/deps/npm/lib/install/report-optional-failure.js @@ -0,0 +1,31 @@ +'use strict' +var path = require('path') +var moduleName = require('../utils/module-name.js') + +module.exports = reportOptionalFailure + +function top (tree) { + if (tree.parent) return top(tree.parent) + return tree +} + +function reportOptionalFailure (tree, what, error) { + var topTree = top(tree) + if (!topTree.warnings) topTree.warnings = [] + var id + if (what) { + var depVer = tree.package.dependencies && tree.package.dependencies[what] + var optDepVer = tree.package.optionalDependencies && tree.package.optionalDependencies[what] + var devDepVer = tree.package.devDependencies && tree.package.devDependencies[what] + var version = depVer || optDepVer || devDepVer + id = what + (version ? '@' + version : '') + } else { + id = tree._id || moduleName(tree) + (tree.package.version ? '@' + tree.package.version : '') + } + var location = path.relative(topTree.path, tree.path) + if (what) location = path.join(location, 'node_modules', what) + + error.optional = id + error.location = location + topTree.warnings.push(error) +} |