2023-06-28 16:19:49 +01:00

30 lines
792 B
TypeScript

import type {
ProjectConfiguration,
ProjectGraphProjectNode,
Tree,
} from '@nx/devkit';
import { createProjectGraphAsync, readProjectConfiguration } from '@nx/devkit';
export async function getProjectsFilteredByDependencies(
tree: Tree,
dependencies: string[]
): Promise<
Array<{
project: ProjectConfiguration;
graphNode: ProjectGraphProjectNode;
}>
> {
const projectGraph = await createProjectGraphAsync();
return Object.entries(projectGraph.dependencies)
.filter(
([node, deps]) =>
!projectGraph.externalNodes?.[node] &&
deps.some(({ target }) => dependencies.includes(target))
)
.map(([projectName]) => ({
project: readProjectConfiguration(tree, projectName),
graphNode: projectGraph.nodes[projectName],
}));
}