Skip to content

Commit 2c0814c

Browse files
authored
Merge pull request #100 from mtrefzer/fix_using_npm_9_lockfileVersion_3
fix: using npm 9 with lockfileVersion 3
2 parents 4dc7a53 + eddbbbb commit 2c0814c

File tree

6 files changed

+79
-3
lines changed

6 files changed

+79
-3
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { getPackageFileDeps } from '@ic/helpers/get-package-file-deps';
2+
3+
describe(`get package.json file deps`, () => {
4+
const packageFileContent = {
5+
name: 'name',
6+
version: '1.2.3',
7+
dependencies: {
8+
'dep-a': '0.0.1',
9+
'dep-b': '^1.0.5',
10+
},
11+
devDependencies: {
12+
'@dev/dep-a': '~2.0.0',
13+
'@dev/dep-b': '8.1.0',
14+
},
15+
};
16+
17+
it('should return deps and devDeps', () => {
18+
const expectedDeps = ['@dev/dep-a', '@dev/dep-b', 'dep-a', 'dep-b'];
19+
expect(getPackageFileDeps(packageFileContent)).toEqual(expectedDeps);
20+
});
21+
});
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { getLockFileVersion } from '@ic/helpers/get-lock-file-version';
2+
import { getPackageLockFileDeps } from '@ic/helpers/get-package-lock-file-deps';
3+
4+
describe(`get package-lock.json file deps`, () => {
5+
it('should return deps with lockfileVersion < 3', () => {
6+
const packageLockFileContentVersion2 = JSON.parse(`{
7+
"name": "lockfile version 2",
8+
"version": "1.2.3",
9+
"lockfileVersion": 2,
10+
"dependencies": {
11+
"dep-a": "0.0.1",
12+
"dep-b": "^1.0.5"
13+
}
14+
}`);
15+
const expectedDeps = ['dep-a', 'dep-b'];
16+
expect(getLockFileVersion(packageLockFileContentVersion2)).toBe(2);
17+
expect(getPackageLockFileDeps(packageLockFileContentVersion2)).toEqual(expectedDeps);
18+
});
19+
20+
it('should return deps with lockfileVersion = 3', () => {
21+
const packageLockFileContentVersion3 = JSON.parse(`{
22+
"name": "lockfile version 3",
23+
"version": "1.2.3",
24+
"lockfileVersion": 3,
25+
"packages": {
26+
"": {
27+
"dependencies": {
28+
"dep-a": "0.0.1",
29+
"dep-b": "^1.0.5"
30+
}
31+
}
32+
}
33+
}`);
34+
const expectedDeps = ['dep-a', 'dep-b'];
35+
expect(getLockFileVersion(packageLockFileContentVersion3)).toBe(3);
36+
expect(getPackageLockFileDeps(packageLockFileContentVersion3)).toEqual(expectedDeps);
37+
});
38+
});

src/conductor/get-third-party.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import fs from 'fs';
22
import pkgUp from 'pkg-up';
33

4+
import { getPackageFileDeps } from '../helpers/get-package-file-deps';
5+
import { getPackageLockFileDeps } from '../helpers/get-package-lock-file-deps';
46
import { parseJsonFile } from '../helpers/parse-json-file';
57

68
export function getThirdParty(): Set<string> {
@@ -9,10 +11,9 @@ export function getThirdParty(): Set<string> {
911
let deps: string[];
1012

1113
if (fs.existsSync(lockPath)) {
12-
deps = Object.keys(parseJsonFile(lockPath).dependencies);
14+
deps = getPackageLockFileDeps(parseJsonFile(lockPath));
1315
} else {
14-
const { dependencies, devDependencies } = parseJsonFile(packagePath);
15-
deps = Object.keys(devDependencies).concat(dependencies);
16+
deps = getPackageFileDeps(parseJsonFile(packagePath));
1617
}
1718

1819
return new Set(deps);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function getLockFileVersion(packageLockContent: any) {
2+
return packageLockContent?.lockfileVersion ?? -1;
3+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export function getPackageFileDeps(packageContent: any): string[] {
2+
const { dependencies, devDependencies } = packageContent;
3+
return Object.keys(devDependencies).concat(Object.keys(dependencies));
4+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { getLockFileVersion } from './get-lock-file-version';
2+
3+
export function getPackageLockFileDeps(packageLockContent: any): string[] {
4+
const lockFileVersion = getLockFileVersion(packageLockContent);
5+
if (lockFileVersion < 3) {
6+
return Object.keys(packageLockContent.dependencies);
7+
}
8+
return Object.keys(packageLockContent.packages[''].dependencies);
9+
}

0 commit comments

Comments
 (0)