Skip to content

Commit 233e529

Browse files
authored
Merge pull request #25 from demensky/peer-optional-dependencies
feat(require-dependency): `peerDependencies` & `optionalDependencies`
2 parents f7c9d69 + 67c2bab commit 233e529

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

lib/rules/require-dependency.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,19 @@ module.exports.create = (context) => {
2323
context.getFilename(),
2424
({ node, value, path, currentWorkspace }) => {
2525
workspaces.forEach(({ package: { name }, location }) => {
26-
const { dependencies = {}, devDependencies = {} } =
27-
currentWorkspace.package;
26+
const {
27+
dependencies = {},
28+
peerDependencies = {},
29+
optionalDependencies = {},
30+
devDependencies = {},
31+
} = currentWorkspace.package;
2832

2933
if (
3034
name !== currentWorkspace.package.name &&
3135
(isSubPath(name, value) || isSubPath(location, path)) &&
3236
!Object.keys(dependencies).includes(name) &&
37+
!Object.keys(peerDependencies).includes(name) &&
38+
!Object.keys(optionalDependencies).includes(name) &&
3339
!Object.keys(devDependencies).includes(name)
3440
) {
3541
context.report({

tests/mocks.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,20 @@ module.exports.findWorkspacesMock = () => [
2020
name: "@test/third-workspace",
2121
},
2222
},
23+
{
24+
location: "/test/peer-dependencies",
25+
package: {
26+
name: "@test/peer-dependencies",
27+
peerDependencies: { "@test/peer-workspace": "^1.0.0" },
28+
},
29+
},
30+
{
31+
location: "/test/optional-dependencies",
32+
package: {
33+
name: "@test/optional-dependencies",
34+
optionalDependencies: { "@test/optional-workspace": "^1.0.0" },
35+
},
36+
},
2337
{
2438
location: "/test/scope/shared",
2539
package: {

tests/rules/require-dependency.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ describe("require-dependency", () => {
2222
filename: "/test/workspace/test.js",
2323
code: "require(undefined)",
2424
},
25+
{
26+
filename: "/test/peer-dependencies/test.js",
27+
code: "import '@test/peer-workspace'",
28+
},
29+
{
30+
filename: "/test/optional-dependencies/test.js",
31+
code: "import '@test/optional-workspace'",
32+
},
2533
],
2634
invalid: [
2735
{

0 commit comments

Comments
 (0)