Skip to content

Commit cd2b1e6

Browse files
nlffritzy
authored andcommitted
fix(explain): display override information
1 parent 05d9bcf commit cd2b1e6

File tree

4 files changed

+55
-4
lines changed

4 files changed

+55
-4
lines changed

lib/commands/explain.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class Explain extends ArboristWorkspaceCmd {
5959

6060
const expls = []
6161
for (const node of nodes) {
62-
const { extraneous, dev, optional, devOptional, peer, inBundle } = node
62+
const { extraneous, dev, optional, devOptional, peer, inBundle, overridden } = node
6363
const expl = node.explain()
6464
if (extraneous) {
6565
expl.extraneous = true
@@ -69,6 +69,7 @@ class Explain extends ArboristWorkspaceCmd {
6969
expl.devOptional = devOptional
7070
expl.peer = peer
7171
expl.bundled = inBundle
72+
expl.overridden = overridden
7273
}
7374
expls.push(expl)
7475
}

lib/utils/explain-dep.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const nocolor = {
88
magenta: s => s,
99
blue: s => s,
1010
green: s => s,
11+
gray: s => s,
1112
}
1213

1314
const { relative } = require('path')
@@ -18,13 +19,14 @@ const explainNode = (node, depth, color) =>
1819
explainLinksIn(node, depth, color)
1920

2021
const colorType = (type, color) => {
21-
const { red, yellow, cyan, magenta, blue, green } = color ? chalk : nocolor
22+
const { red, yellow, cyan, magenta, blue, green, gray } = color ? chalk : nocolor
2223
const style = type === 'extraneous' ? red
2324
: type === 'dev' ? yellow
2425
: type === 'optional' ? cyan
2526
: type === 'peer' ? magenta
2627
: type === 'bundled' ? blue
2728
: type === 'workspace' ? green
29+
: type === 'overridden' ? gray
2830
: /* istanbul ignore next */ s => s
2931
return style(type)
3032
}
@@ -40,6 +42,7 @@ const printNode = (node, color) => {
4042
peer,
4143
bundled,
4244
isWorkspace,
45+
overridden,
4346
} = node
4447
const { bold, dim, green } = color ? chalk : nocolor
4548
const extra = []
@@ -63,6 +66,10 @@ const printNode = (node, color) => {
6366
extra.push(' ' + bold(colorType('bundled', color)))
6467
}
6568

69+
if (overridden) {
70+
extra.push(' ' + bold(colorType('overridden', color)))
71+
}
72+
6673
const pkgid = isWorkspace
6774
? green(`${name}@${version}`)
6875
: `${bold(name)}@${bold(version)}`
@@ -112,11 +119,15 @@ const explainDependents = ({ name, dependents }, depth, color) => {
112119
return str.split('\n').join('\n ')
113120
}
114121

115-
const explainEdge = ({ name, type, bundled, from, spec }, depth, color) => {
122+
const explainEdge = ({ name, type, bundled, from, spec, rawSpec, overridden }, depth, color) => {
116123
const { bold } = color ? chalk : nocolor
117-
const dep = type === 'workspace'
124+
let dep = type === 'workspace'
118125
? bold(relative(from.location, spec.slice('file:'.length)))
119126
: `${bold(name)}@"${bold(spec)}"`
127+
if (overridden) {
128+
dep = `${colorType('overridden', color)} ${dep} (was "${rawSpec}")`
129+
}
130+
120131
const fromMsg = ` from ${explainFrom(from, depth, color)}`
121132

122133
return (type === 'prod' ? '' : `${colorType(type, color)} `) +

tap-snapshots/test/lib/utils/explain-dep.js.test.cjs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,28 @@ [email protected] optional
156156
node_modules/optdep
157157
`
158158

159+
exports[`test/lib/utils/explain-dep.js TAP overridden > explain color deep 1`] = `
160+
overridden-root@1.0.0 overridden
161+
node_modules/overridden-root
162+
overridden overridden-dep@"1.0.0" (was "^2.0.0") from the root project
163+
`
164+
165+
exports[`test/lib/utils/explain-dep.js TAP overridden > explain nocolor shallow 1`] = `
166+
167+
node_modules/overridden-root
168+
overridden overridden-dep@"1.0.0" (was "^2.0.0") from the root project
169+
`
170+
171+
exports[`test/lib/utils/explain-dep.js TAP overridden > print color 1`] = `
172+
overridden-root@1.0.0 overridden
173+
node_modules/overridden-root
174+
`
175+
176+
exports[`test/lib/utils/explain-dep.js TAP overridden > print nocolor 1`] = `
177+
178+
node_modules/overridden-root
179+
`
180+
159181
exports[`test/lib/utils/explain-dep.js TAP peer > explain color deep 1`] = `
160182
peer@1.0.0 peer
161183
node_modules/peer

test/lib/utils/explain-dep.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,23 @@ const cases = {
129129
dependents: [],
130130
extraneous: true,
131131
},
132+
133+
overridden: {
134+
name: 'overridden-root',
135+
version: '1.0.0',
136+
location: 'node_modules/overridden-root',
137+
overridden: true,
138+
dependents: [{
139+
type: 'prod',
140+
name: 'overridden-dep',
141+
spec: '1.0.0',
142+
rawSpec: '^2.0.0',
143+
overridden: true,
144+
from: {
145+
location: '/path/to/project',
146+
},
147+
}],
148+
},
132149
}
133150

134151
cases.manyDeps = {

0 commit comments

Comments
 (0)