Skip to content

Commit 7d85ce9

Browse files
committed
feat: correctly detect direct dependencies
Workaround for npm/arborist#60
1 parent 9e53a81 commit 7d85ce9

File tree

4 files changed

+30
-4
lines changed

4 files changed

+30
-4
lines changed

lib/deps.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,16 @@ exports.resolve = async ({ packageJson, lockfile }, options) => {
3232
Fs.writeFileSync(Path.join(path, 'package-lock.json'), JSON.stringify(lockfile, null, ' '));
3333
}
3434

35+
const direct = new Set();
36+
['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'].forEach((depType) => {
37+
38+
if (!packageJson[depType]) {
39+
return;
40+
}
41+
42+
Object.keys(packageJson[depType]).forEach((dep) => direct.add(dep));
43+
});
44+
3545
const arborist = new Arborist({ path });
3646

3747
await arborist.buildIdealTree();
@@ -40,7 +50,7 @@ exports.resolve = async ({ packageJson, lockfile }, options) => {
4050

4151
internals.walk(arborist.idealTree, (node) => {
4252

43-
if (node.isTop) {
53+
if (node.isRoot) {
4454
return;
4555
}
4656

@@ -49,8 +59,14 @@ exports.resolve = async ({ packageJson, lockfile }, options) => {
4959
return;
5060
}
5161

52-
if (!deep && !node.parent.isTop) {
62+
if (!deep && !node.parent.isRoot) {
63+
// only include deep deps when `options.deep` flag is set
64+
return;
65+
}
66+
67+
if (!deep && !direct.has(node.name)) {
5368
// only include deep deps when `options.deep` flag is set
69+
// workaround for https://github.com/npm/arborist/issues/60
5470
return;
5571
}
5672

test/deps.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ describe('Deps', () => {
3636
expect(result).to.equal({
3737
'ci-info': ['1.6.0', '2.0.0'],
3838
'is-ci': ['2.0.0'],
39+
'debug': ['4.1.1'],
3940
'ms': ['2.1.2']
4041
});
4142
});
@@ -50,7 +51,7 @@ describe('Deps', () => {
5051
expect(result).to.equal({
5152
'ci-info': ['1.6.0'],
5253
'is-ci': ['2.0.0'],
53-
'ms': ['2.1.2']
54+
'debug': ['4.1.1']
5455
});
5556
});
5657

test/fixtures/deps-test/npm-shrinkwrap.json

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/fixtures/deps-test/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
"ci-info": "^1.6.0"
66
},
77
"devDependencies": {
8-
"ms": "^2.1.2"
8+
"debug": "^4.1.1"
99
}
1010
}

0 commit comments

Comments
 (0)