Skip to content

Commit

Permalink
fix: allow peer dep of a dep to be in devdep
Browse files Browse the repository at this point in the history
fixes #323
  • Loading branch information
christophehurpeau committed Jul 7, 2022
1 parent 2ec0e5b commit 4e36aa8
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 2 deletions.
61 changes: 61 additions & 0 deletions src/checks/checkDirectPeerDependencies.test.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* eslint-disable max-lines */
import { createReportError } from '../utils/createReportError';
import { createOnlyWarnsForMappingCheck } from '../utils/warnForUtils';
import { checkDirectPeerDependencies } from './checkDirectPeerDependencies';
Expand Down Expand Up @@ -182,4 +183,64 @@ describe('checkDirectPeerDependencies', () => {
);
expect(mockReportError).not.toHaveBeenCalled();
});

it('should not report error when @types is in dev dependency of an app', () => {
checkDirectPeerDependencies(
false,
{
name: 'test',
dependencies: {
'some-lib-using-types': '1.0.0',
},
devDependencies: {
'@types/a': '1.0.0',
},
},
'path',
jest
.fn()
.mockImplementationOnce(() => ({
name: '@types/a',
}))
.mockImplementationOnce(() => ({
name: 'some-lib-using-types',
peerDependencies: { '@types/a': '^1.0.0' },
})),
createOnlyWarnsForMappingCheck('test', []),
createOnlyWarnsForMappingCheck('test', []),
);
expect(mockReportError).not.toHaveBeenCalled();
});

it('should not report error when @types is missing in dependencies/peerDependency of a library', () => {
checkDirectPeerDependencies(
true,
{
name: 'test',
dependencies: {
'some-lib-using-types': '1.0.0',
},
devDependencies: {
'@types/a': '1.0.0',
},
},
'path',
jest
.fn()
.mockImplementationOnce(() => ({
name: '@types/a',
}))
.mockImplementationOnce(() => ({
name: 'some-lib-using-types',
peerDependencies: { '@types/a': '^1.0.0' },
})),
createOnlyWarnsForMappingCheck('test', []),
createOnlyWarnsForMappingCheck('test', []),
);
expect(mockReportError).toHaveBeenCalledWith(
'Missing "@types/a" peer dependency from "some-lib-using-types" in dependencies',
'it should satisfies "^1.0.0" and be in dependencies or peerDependencies',
false,
);
});
});
7 changes: 5 additions & 2 deletions src/checks/checkDirectPeerDependencies.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,13 @@ const getAllowedPeerInFromType = (
case 'devDependencies':
return ['devDependencies', 'dependencies'];
case 'dependencies':
case 'optionalDependencies':
return isLibrary
? ['dependencies', 'peerDependencies']
: ['dependencies'];
: ['devDependencies', 'dependencies'];
case 'optionalDependencies':
return isLibrary
? ['dependencies', 'optionalDependencies', 'peerDependencies']
: ['devDependencies', 'dependencies'];
}
};

Expand Down

0 comments on commit 4e36aa8

Please sign in to comment.