Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGar <gar+gh@danger.computer>2021-02-25 02:54:50 +0300
committerRuy Adorno <ruyadorno@hotmail.com>2021-03-05 00:05:08 +0300
commit4a5dd3a5a200b3f4f7b47168497d8e03dca3a2ca (patch)
treed34a1ea229b719c3cfbdce85899ceaf67b43e7ab /lib/dedupe.js
parentb33c760cea7fe2696d35b5530abc1b455980fef1 (diff)
fix(npm) pass npm context everywhere
Instead of files randomly requiring the npm singleton, we pass it where it needs to go so that tests don't need to do so much require mocking everywhere PR-URL: https://github.com/npm/cli/pull/2772 Credit: @wraithgar Close: #2772 Reviewed-by: @ruyadorno
Diffstat (limited to 'lib/dedupe.js')
-rw-r--r--lib/dedupe.js46
1 files changed, 28 insertions, 18 deletions
diff --git a/lib/dedupe.js b/lib/dedupe.js
index 2211fcac8..59978895e 100644
--- a/lib/dedupe.js
+++ b/lib/dedupe.js
@@ -1,29 +1,39 @@
// dedupe duplicated packages, or find them in the tree
-const npm = require('./npm.js')
const Arborist = require('@npmcli/arborist')
const usageUtil = require('./utils/usage.js')
const reifyFinish = require('./utils/reify-finish.js')
-const usage = usageUtil('dedupe', 'npm dedupe')
+class Dedupe {
+ constructor (npm) {
+ this.npm = npm
+ }
-const cmd = (args, cb) => dedupe(args).then(() => cb()).catch(cb)
+ /* istanbul ignore next - see test/lib/load-all-commands.js */
+ get usage () {
+ return usageUtil('dedupe', 'npm dedupe')
+ }
-const dedupe = async (args) => {
- if (npm.flatOptions.global) {
- const er = new Error('`npm dedupe` does not work in global mode.')
- er.code = 'EDEDUPEGLOBAL'
- throw er
+ exec (args, cb) {
+ this.dedupe(args).then(() => cb()).catch(cb)
}
- const dryRun = (args && args.dryRun) || npm.flatOptions.dryRun
- const where = npm.prefix
- const arb = new Arborist({
- ...npm.flatOptions,
- path: where,
- dryRun,
- })
- await arb.dedupe(npm.flatOptions)
- await reifyFinish(arb)
+ async dedupe (args) {
+ if (this.npm.config.get('global')) {
+ const er = new Error('`npm dedupe` does not work in global mode.')
+ er.code = 'EDEDUPEGLOBAL'
+ throw er
+ }
+
+ const dryRun = this.npm.config.get('dry-run')
+ const where = this.npm.prefix
+ const arb = new Arborist({
+ ...this.npm.flatOptions,
+ path: where,
+ dryRun,
+ })
+ await arb.dedupe(this.npm.flatOptions)
+ await reifyFinish(this.npm, arb)
+ }
}
-module.exports = Object.assign(cmd, { usage })
+module.exports = Dedupe