@storm-software/build-tools
Version:
A comprehensive set of tools for building and managing projects within a Storm workspace. Includes builders such as rollup, rolldown, tsup, and unbuild, along with various utilities.
76 lines (74 loc) • 2.16 kB
JavaScript
// src/utilities/task-graph.ts
import {
createTaskGraph,
mapTargetDefaultsToDependencies
} from "nx/src/tasks-runner/create-task-graph";
function getAllWorkspaceTaskGraphs(nxJson, projectGraph) {
const defaultDependencyConfigs = mapTargetDefaultsToDependencies(
nxJson.targetDefaults
);
const taskGraphs = {};
const taskGraphErrors = {};
for (const projectName in projectGraph.nodes) {
const project = projectGraph.nodes[projectName];
const targets = Object.keys(project?.data.targets ?? {});
for (const target of targets) {
const taskId = createTaskId(projectName, target);
try {
taskGraphs[taskId] = createTaskGraph(
projectGraph,
defaultDependencyConfigs,
[projectName],
[target],
void 0,
{}
);
} catch (err) {
taskGraphs[taskId] = {
tasks: {},
dependencies: {},
continuousDependencies: {},
roots: []
};
taskGraphErrors[taskId] = err.message;
}
const configurations = Object.keys(
project?.data?.targets?.[target]?.configurations || {}
);
if (configurations.length > 0) {
for (const configuration of configurations) {
const taskId2 = createTaskId(projectName, target, configuration);
try {
taskGraphs[taskId2] = createTaskGraph(
projectGraph,
defaultDependencyConfigs,
[projectName],
[target],
configuration,
{}
);
} catch (err) {
taskGraphs[taskId2] = {
tasks: {},
dependencies: {},
continuousDependencies: {},
roots: []
};
taskGraphErrors[taskId2] = err.message;
}
}
}
}
}
return { taskGraphs, errors: taskGraphErrors };
}
function createTaskId(projectId, targetId, configurationId) {
if (configurationId) {
return `${projectId}:${targetId}:${configurationId}`;
}
return `${projectId}:${targetId}`;
}
export {
getAllWorkspaceTaskGraphs,
createTaskId
};