diff options
Diffstat (limited to 'lib/prune.js')
-rw-r--r-- | lib/prune.js | 75 |
1 files changed, 13 insertions, 62 deletions
diff --git a/lib/prune.js b/lib/prune.js index 62c9a9225..6e1cd9318 100644 --- a/lib/prune.js +++ b/lib/prune.js @@ -1,69 +1,20 @@ -// XXX replace this with @npmcli/arborist // prune extraneous packages. +const util = require('util') +const Arborist = require('@npmcli/arborist') +const rimraf = util.promisify(require('rimraf')) +const reifyOutput = require('./utils/reify-output.js') +const usageUtil = require('./utils/usage.js') -module.exports = prune -module.exports.Pruner = Pruner +const usage = usageUtil('prune', + 'npm prune [[<@scope>/]<pkg>...] [--production]') -prune.usage = 'npm prune [[<@scope>/]<pkg>...] [--production]' +const completion = require('./utils/completion/installed-deep.js') -var npm = require('./npm.js') -var log = require('npmlog') -var util = require('util') -var moduleName = require('./utils/module-name.js') -var Installer = require('./install.js').Installer -var isExtraneous = require('./install/is-extraneous.js') -var isOnlyDev = require('./install/is-only-dev.js') -var removeDeps = require('./install/deps.js').removeDeps -var loadExtraneous = require('./install/deps.js').loadExtraneous -var chain = require('slide').chain -var computeMetadata = require('./install/deps.js').computeMetadata +const cmd = (args, cb) => prune(args).then(() => cb()).catch(cb) -prune.completion = require('./utils/completion/installed-deep.js') - -function prune (args, cb) { - var dryrun = !!npm.config.get('dry-run') - new Pruner('.', dryrun, args).run(cb) -} - -function Pruner (where, dryrun, args) { - Installer.call(this, where, dryrun, args) - this.autoPrune = true -} -util.inherits(Pruner, class {}) // Installer) - -Pruner.prototype.loadAllDepsIntoIdealTree = function (cb) { - log.silly('uninstall', 'loadAllDepsIntoIdealTree') - - var cg = this.progress['loadIdealTree:loadAllDepsIntoIdealTree'] - var steps = [] - - computeMetadata(this.idealTree) - var self = this - var excludeDev = npm.config.get('production') || /^prod(uction)?$/.test(npm.config.get('only')) - function shouldPrune (child) { - if (isExtraneous(child)) return true - if (!excludeDev) return false - return isOnlyDev(child) - } - function getModuleName (child) { - // wrapping because moduleName doesn't like extra args and we're called - // from map. - return moduleName(child) - } - function matchesArg (name) { - return self.args.length === 0 || self.args.indexOf(name) !== -1 - } - function nameObj (name) { - return {name: name} - } - var toPrune = this.idealTree.children.filter(shouldPrune).map(getModuleName).filter(matchesArg).map(nameObj) - - steps.push( - [removeDeps, toPrune, this.idealTree, null], - [loadExtraneous, this.idealTree, cg.newGroup('loadExtraneous')]) - chain(steps, cb) +const prune = async args => { + require('npmlog').warn('coming soon!') + throw new Error('not yet implemented') } -Pruner.prototype.runPreinstallTopLevelLifecycles = function (cb) { cb() } -Pruner.prototype.runPostinstallTopLevelLifecycles = function (cb) { cb() } -Pruner.prototype.saveToDependencies = function (cb) { cb() } +module.exports = Object.assign(cmd, { usage, completion }) |