Skip to content

Commit

Permalink
fix(linter): check for source package.json on banTransitiveDependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
meeroslav committed Feb 22, 2023
1 parent e91e2c5 commit a387a5e
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,10 @@ export default createESLintRule<Options, MessageIds>({

// project => npm package
if (targetProject.type === 'npm') {
if (banTransitiveDependencies && !isDirectDependency(targetProject)) {
if (
banTransitiveDependencies &&
!isDirectDependency(sourceProject, targetProject)
) {
context.report({
node,
messageId: 'noTransitiveDependencies',
Expand Down
29 changes: 21 additions & 8 deletions packages/eslint-plugin-nx/src/utils/runtime-lint-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -335,25 +335,38 @@ export function hasBannedDependencies(
]);
}

export function isDirectDependency(target: ProjectGraphExternalNode): boolean {
const fileName = 'package.json';
const content = readFileIfExisting(join(workspaceRoot, fileName));
export function isDirectDependency(
source: ProjectGraphProjectNode,
target: ProjectGraphExternalNode
): boolean {
return (
packageExistsInPackageJson(target.data.packageName, '.') ||
packageExistsInPackageJson(target.data.packageName, source.data.root)
);
}

function packageExistsInPackageJson(
packageName: string,
projectRoot: string
): boolean {
const content = readFileIfExisting(
join(workspaceRoot, projectRoot, 'package.json')
);
if (content) {
const { dependencies, devDependencies, peerDependencies } =
parseJson(content);
if (dependencies && dependencies[target.data.packageName]) {
if (dependencies && dependencies[packageName]) {
return true;
}
if (peerDependencies && peerDependencies[target.data.packageName]) {
if (peerDependencies && peerDependencies[packageName]) {
return true;
}
if (devDependencies && devDependencies[target.data.packageName]) {
if (devDependencies && devDependencies[packageName]) {
return true;
}
return false;
}

return true;
return false;
}

/**
Expand Down

0 comments on commit a387a5e

Please sign in to comment.