chore(graph): add ability to filter tasks without dependencies (#13269)

This commit is contained in:
Philip Fulcher 2022-11-21 09:16:10 -07:00 committed by GitHub
parent 328c54787f
commit bc2f2490e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 1545 additions and 720 deletions

View File

@ -63,6 +63,7 @@
"assets": [
"graph/client/src/favicon.ico",
"graph/client/src/assets/project-graphs/",
"graph/client/src/assets/task-graphs/",
"graph/client/src/assets/generated-project-graphs/",
"graph/client/src/assets/generated-task-graphs/",
{
@ -76,6 +77,7 @@
"assets": [
"graph/client/src/favicon.ico",
"graph/client/src/assets/project-graphs/",
"graph/client/src/assets/task-graphs/",
{
"input": "graph/client/src/assets/dev-e2e",
"output": "/",

View File

@ -134,7 +134,7 @@ export function ProjectsSidebar(): JSX.Element {
useIntervalWhen(
() => {
const selectedWorkspaceId =
params.selectedProjectId ??
params.selectedWorkspaceId ??
environmentConfig.appConfig.defaultWorkspaceId;
const projectInfo = environmentConfig.appConfig.workspaces.find(

View File

@ -15,11 +15,18 @@ import { useEffect } from 'react';
import FocusedPanel from '../ui-components/focused-panel';
import CheckboxPanel from '../ui-components/checkbox-panel';
// nx-ignore-next-line
import { TargetConfiguration } from 'nx/src/config/workspace-json-project-json';
export function TasksSidebar() {
const graphService = getGraphService();
const navigate = useNavigate();
const params = useParams();
const [searchParams, setSearchParams] = useSearchParams();
const groupByProject = searchParams.get('groupByProject') === 'true';
const hideTasksWithoutDeps =
searchParams.get('filterTasksWithoutDeps') !== 'false';
const selectedProjectRouteData = useRouteLoaderData(
'selectedWorkspace'
@ -30,17 +37,27 @@ export function TasksSidebar() {
'selectedTask'
) as TaskGraphClientResponse;
const { taskGraphs } = routeData;
const projects = selectedProjectRouteData.projects;
// const projects = selectedProjectRouteData.projects.filter((project) => {
// return (
// Object.keys(project.data.targets).filter((target) => {
// const taskName = `${project.name}:${target}`;
// return (
// taskGraphs[taskName]?.dependencies[taskName]?.length > 0
// );
// }).length > 0
// );
// });
let projects = selectedProjectRouteData.projects;
if (searchParams.get('filterTasksWithoutDeps') !== 'false') {
projects = projects
.map((project) => {
const targets: { [p: string]: TargetConfiguration } = {};
Object.keys(project.data.targets).forEach((targetName) => {
const taskName = `${project.name}:${targetName}`;
if (taskGraphs[taskName]?.dependencies[taskName]?.length > 0) {
targets[targetName] = project.data.targets[targetName];
}
});
return Object.keys(targets).length > 0
? { ...project, data: { ...project.data, targets } }
: null;
})
.filter((project) => project !== null);
}
const selectedTask = params['selectedTaskId'];
useEffect(() => {
@ -64,8 +81,6 @@ export function TasksSidebar() {
}
}, [params]);
const groupByProject = searchParams.get('groupByProject') === 'true';
useEffect(() => {
if (groupByProject) {
graphService.handleTaskEvent({
@ -81,25 +96,48 @@ export function TasksSidebar() {
}, [searchParams]);
function selectTask(taskId: string) {
if (taskId === selectedTask) return;
if (selectedTask) {
navigate(`../${taskId}`);
navigate(
{ pathname: `../${taskId}`, search: searchParams.toString() },
{ relative: 'path' }
);
} else {
navigate(`./${taskId}`);
navigate(
{ pathname: `${taskId}`, search: searchParams.toString() },
{ relative: 'path' }
);
}
}
function resetFocus() {
navigate('..');
navigate('..', { relative: 'path' });
}
function groupByProjectChanged(checked) {
setSearchParams((currentSearchParams) => {
setSearchParams(
(currentSearchParams) => {
if (checked) {
currentSearchParams.set('groupByProject', 'true');
} else {
currentSearchParams.delete('groupByProject');
}
return currentSearchParams;
},
{ relative: 'path' }
);
}
function hideTasksWithoutDepsChanged(checked) {
setSearchParams((currentSearchParams) => {
if (!checked) {
currentSearchParams.set('filterTasksWithoutDeps', 'false');
} else {
currentSearchParams.delete('filterTasksWithoutDeps');
}
return currentSearchParams;
});
}
@ -121,6 +159,16 @@ export function TasksSidebar() {
description={'Visually arrange tasks by project.'}
/>
<CheckboxPanel
checked={hideTasksWithoutDeps}
checkChanged={hideTasksWithoutDepsChanged}
name={'hideTasksWithoutDeps'}
label={'Hide tasks without dependencies'}
description={
"Don't show tasks without dependencies, which means only that task will be executed when run."
}
/>
<TaskList
projects={projects}
workspaceLayout={workspaceLayout}

View File

@ -31,9 +31,9 @@ const workspaceDataLoader = async (selectedWorkspaceId: string) => {
return projectGraph;
};
const taskDataLoader = async (selectedProjectId: string) => {
const taskDataLoader = async (selectedWorkspaceId: string) => {
const projectInfo = appConfig.workspaces.find(
(graph) => graph.id === selectedProjectId
(graph) => graph.id === selectedWorkspaceId
);
return await projectGraphDataService.getTaskGraph(projectInfo.taskGraphUrl);
@ -42,7 +42,6 @@ const taskDataLoader = async (selectedProjectId: string) => {
const childRoutes: RouteObject[] = [
{
path: 'projects',
loader: () => {},
element: <ProjectsSidebar />,
},
{
@ -53,12 +52,18 @@ const childRoutes: RouteObject[] = [
return redirect(`/projects`);
}
const selectedProjectId =
params.selectedProjectId ?? appConfig.defaultWorkspaceId;
return taskDataLoader(selectedProjectId);
const selectedWorkspaceId =
params.selectedWorkspaceId ?? appConfig.defaultWorkspaceId;
return taskDataLoader(selectedWorkspaceId);
},
path: 'tasks',
id: 'selectedTask',
shouldRevalidate: ({ currentParams, nextParams }) => {
return (
!currentParams.selectedWorkspaceId ||
currentParams.selectedWorkspaceId !== nextParams.selectedWorkspaceId
);
},
children: [
{
index: true,
@ -85,13 +90,18 @@ export const devRoutes: RouteObject[] = [
},
},
{
path: ':selectedProjectId',
path: ':selectedWorkspaceId',
id: 'selectedWorkspace',
element: <Shell />,
shouldRevalidate: ({ currentParams, nextParams }) => {
return (
currentParams.selectedWorkspaceId !== nextParams.selectedWorkspaceId
);
},
loader: async ({ request, params }) => {
const selectedProjectId =
params.selectedProjectId ?? appConfig.defaultWorkspaceId;
return workspaceDataLoader(selectedProjectId);
const selectedWorkspaceId =
params.selectedWorkspaceId ?? appConfig.defaultWorkspaceId;
return workspaceDataLoader(selectedWorkspaceId);
},
children: childRoutes,
},
@ -107,6 +117,9 @@ export const releaseRoutes: RouteObject[] = [
const selectedWorkspaceId = appConfig.defaultWorkspaceId;
return workspaceDataLoader(selectedWorkspaceId);
},
shouldRevalidate: () => {
return false;
},
element: <Shell />,
children: [
{

View File

@ -44,7 +44,7 @@ export function Shell(): JSX.Element {
const navigate = useNavigate();
const currentPath = useCurrentPath();
const { selectedProjectId, selectedTaskId } = useParams();
const { selectedWorkspaceId, selectedTaskId } = useParams();
const taskIsSelected = !!selectedTaskId;
const currentRoute = currentPath.currentPath;
@ -61,7 +61,7 @@ export function Shell(): JSX.Element {
];
function projectChange(projectGraphId: string) {
// setSelectedProjectId(projectGraphId);
// setselectedWorkspaceId(projectGraphId);
navigate(`/${projectGraphId}${topLevelRoute}`);
}
@ -169,7 +169,7 @@ export function Shell(): JSX.Element {
{environment.appConfig.showDebugger ? (
<DebuggerPanel
projects={environment.appConfig.workspaces}
selectedProject={selectedProjectId}
selectedProject={selectedWorkspaceId}
lastPerfReport={lastPerfReport}
selectedProjectChange={projectChange}
></DebuggerPanel>

View File

@ -10,7 +10,7 @@ export interface TaskNodeTooltipProps {
export function TaskNodeTooltip({ id, executor }: TaskNodeTooltipProps) {
const params = useParams();
const selectedWorkspaceId = params['selectedProjectId'];
const selectedWorkspaceId = params['selectedWorkspaceId'];
const to = selectedWorkspaceId
? `/${selectedWorkspaceId}/tasks/${id}`

View File

@ -1,119 +0,0 @@
{
"hash": "1c2b69586aa096dc5e42eb252d0b5bfb94f20dc969a1e7b6f381a3b13add6928",
"layout": {
"appsDir": "apps",
"libsDir": "libs"
},
"projects": [
{
"name": "app1",
"type": "app",
"data": {
"tags": [],
"root": "apps/app1"
}
},
{
"name": "app2",
"type": "app",
"data": {
"tags": [],
"root": "apps/app2"
}
},
{
"name": "lib1",
"type": "lib",
"data": {
"tags": [],
"root": "libs/lib1"
}
},
{
"name": "lib2",
"type": "lib",
"data": {
"tags": [],
"root": "libs/lib2"
}
},
{
"name": "lib3",
"type": "lib",
"data": {
"tags": [],
"root": "libs/lib3"
}
},
{
"name": "lib4",
"type": "lib",
"data": {
"tags": [],
"root": "libs/lib4"
}
},
{
"name": "lib5",
"type": "lib",
"data": {
"tags": [],
"root": "libs/lib5"
}
}
],
"dependencies": {
"app1": [
{
"type": "static",
"source": "app1",
"target": "lib1"
}
],
"app2": [
{
"type": "static",
"source": "app2",
"target": "lib2"
},
{
"type": "static",
"source": "app2",
"target": "lib5"
}
],
"lib1": [
{
"type": "static",
"source": "lib1",
"target": "lib3"
}
],
"lib2": [
{
"type": "static",
"source": "lib2",
"target": "lib3"
}
],
"lib3": [
{
"type": "static",
"source": "lib3",
"target": "lib4"
}
],
"lib4": [],
"lib5": [
{
"type": "static",
"source": "lib5",
"target": "lib4"
}
]
},
"affected": ["lib3", "lib1", "lib2", "app1", "app2"],
"changes": {
"added": []
}
}

View File

@ -1,222 +0,0 @@
{
"hash": "1c2b69586aa096dc5e42eb252d0b5bfb94f20dc969a1e7b6f381a3b13add6928",
"layout": {
"appsDir": "apps",
"libsDir": "libs"
},
"projects": [
{
"name": "web",
"type": "app",
"data": {
"tags": [],
"root": "apps/app1"
}
},
{
"name": "admin",
"type": "app",
"data": {
"tags": [],
"root": "apps/app2"
}
},
{
"name": "core-util-auth",
"type": "lib",
"data": {
"tags": [],
"root": "core/util-auth"
}
},
{
"name": "web-feature-home-page",
"type": "lib",
"data": {
"tags": [],
"root": "web/feature-homepage"
}
},
{
"name": "web-feature-search",
"type": "lib",
"data": {
"tags": [],
"root": "web/feature-search"
}
},
{
"name": "web-data-access",
"type": "lib",
"data": {
"tags": [],
"root": "web/feature-search"
}
},
{
"name": "admin-feature-users",
"type": "lib",
"data": {
"tags": [],
"root": "admin/feature-users"
}
},
{
"name": "admin-feature-billing",
"type": "lib",
"data": {
"tags": [],
"root": "admin/feature-billing"
}
},
{
"name": "admin-data-access",
"type": "lib",
"data": {
"tags": [],
"root": "admin/data-access"
}
},
{
"name": "shared-components-ui-button",
"type": "lib",
"data": {
"tags": [],
"root": "shared/components/ui-button"
}
},
{
"name": "shared-components-ui-form",
"type": "lib",
"data": {
"tags": [],
"root": "shared/components/ui-form"
}
},
{
"name": "shared-util",
"type": "lib",
"data": {
"tags": [],
"root": "shared/util"
}
}
],
"dependencies": {
"web": [
{
"type": "dynamic",
"source": "web",
"target": "web-feature-home-page"
},
{
"type": "dynamic",
"source": "web",
"target": "web-feature-search"
},
{
"type": "static",
"source": "web",
"target": "core-util-auth"
}
],
"admin": [
{
"type": "dynamic",
"source": "admin",
"target": "admin-feature-users"
},
{
"type": "dynamic",
"source": "admin",
"target": "admin-feature-billing"
},
{
"type": "static",
"source": "admin",
"target": "core-util-auth"
}
],
"web-feature-home-page": [
{
"type": "static",
"source": "web-feature-home-page",
"target": "web-data-access"
},
{
"type": "static",
"source": "web-feature-home-page",
"target": "shared-components-ui-button"
}
],
"web-feature-search": [
{
"type": "static",
"source": "web-feature-search",
"target": "web-data-access"
},
{
"type": "static",
"source": "web-feature-search",
"target": "shared-components-ui-button"
},
{
"type": "static",
"source": "web-feature-search",
"target": "shared-components-ui-form"
}
],
"web-data-access": [
{
"type": "static",
"source": "web-data-access",
"target": "core-util-auth"
}
],
"admin-feature-users": [
{
"type": "static",
"source": "admin-feature-users",
"target": "admin-data-access"
},
{
"type": "static",
"source": "admin-feature-users",
"target": "shared-components-ui-button"
}
],
"admin-feature-billing": [
{
"type": "static",
"source": "admin-feature-billing",
"target": "admin-data-access"
},
{
"type": "static",
"source": "admin-feature-billing",
"target": "shared-components-ui-button"
}
],
"admin-data-access": [
{
"type": "static",
"source": "admin-data-access",
"target": "core-util-auth"
}
],
"core-util-auth": [],
"shared-components-ui-button": [],
"shared-components-ui-form": [
{
"type": "static",
"source": "shared-components-ui-form",
"target": "shared-util"
}
],
"shared-util": []
},
"affected": [],
"changes": {
"added": []
}
}

View File

@ -1,5 +1,5 @@
{
"hash": "f04e623f47ff05af4d6a6b50f489da2d497e8c37baf8a31f06c54acc21e6195f",
"hash": "081624f3bbc67c126e9dc313133c5a0138ae383da39f8793b26609698aea957b",
"projects": [
{
"name": "products-product-detail-page",
@ -18,7 +18,7 @@
},
{
"file": "libs/products/product-detail-page/project.json",
"hash": "afaf79c79d5914d6f3a73e9406295d1df0709334"
"hash": "42d4e99947abf15b066725489c2d7762a9927c26"
},
{
"file": "libs/products/product-detail-page/README.md",
@ -91,7 +91,35 @@
"file": "libs/products/product-detail-page/tsconfig.spec.json",
"hash": "34c38b0ec3a38a7cbd5c3e378ff421ad31e84efb"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/products/product-detail-page/src/**/*.ts",
"libs/products/product-detail-page/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
},
"test": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "libs/products/product-detail-page/jest.config.ts",
"passWithNoTests": true
},
"outputs": [
"{workspaceRoot}/coverage/libs/products/product-detail-page"
],
"inputs": [
"default",
"^production",
"{workspaceRoot}/jest.preset.js"
]
}
}
}
},
{
@ -115,7 +143,7 @@
},
{
"file": "libs/shared/product/state/project.json",
"hash": "851c8ba6632d38e2ccde4b4cf6e0b12b8e3f66f1"
"hash": "a20fa0bc68211fd70e7d0f9d10afac0fd7b870ee"
},
{
"file": "libs/shared/product/state/README.md",
@ -185,7 +213,33 @@
"file": "libs/shared/product/state/tsconfig.spec.json",
"hash": "8603a008c3b77e77e142939e83e05e4a1043fbc6"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/shared/product/state/src/**/*.ts",
"libs/shared/product/state/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
},
"test": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "libs/shared/product/state/jest.config.ts",
"passWithNoTests": true
},
"outputs": ["{workspaceRoot}/coverage/libs/shared/product/state"],
"inputs": [
"default",
"^production",
"{workspaceRoot}/jest.preset.js"
]
}
}
}
},
{
@ -205,7 +259,7 @@
},
{
"file": "libs/shared/product/types/project.json",
"hash": "92202a2aaf4c482dd8e463ddefc6d0eb6f5640f2"
"hash": "ec241f2eb0e767417c03660a32c089a2d04436e4"
},
{
"file": "libs/shared/product/types/README.md",
@ -227,7 +281,20 @@
"file": "libs/shared/product/types/tsconfig.lib.json",
"hash": "a174cb09c30e46285517c7308247d602414aa63f"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/shared/product/types/src/**/*.ts",
"libs/shared/product/types/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
}
}
}
},
{
@ -247,7 +314,7 @@
},
{
"file": "libs/shared/product/data/project.json",
"hash": "8c12bcd46a2d49861cd71b6b9502bf5a408c380d"
"hash": "80c548ef891993c38d3ddd54f4d3895a11202b5a"
},
{
"file": "libs/shared/product/data/README.md",
@ -278,7 +345,20 @@
"file": "libs/shared/product/data/tsconfig.lib.json",
"hash": "a174cb09c30e46285517c7308247d602414aa63f"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/shared/product/data/src/**/*.ts",
"libs/shared/product/data/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
}
}
}
},
{
@ -298,7 +378,7 @@
},
{
"file": "libs/products/home-page/project.json",
"hash": "49e94220da64777b26d6e9c64f3b8b5b54d9dd69"
"hash": "c86b3756dcd29b22cd576544ee6d33bdccc664f2"
},
{
"file": "libs/products/home-page/README.md",
@ -370,7 +450,33 @@
"file": "libs/products/home-page/tsconfig.spec.json",
"hash": "34c38b0ec3a38a7cbd5c3e378ff421ad31e84efb"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/products/home-page/src/**/*.ts",
"libs/products/home-page/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
},
"test": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "libs/products/home-page/jest.config.ts",
"passWithNoTests": true
},
"outputs": ["{workspaceRoot}/coverage/libs/products/home-page"],
"inputs": [
"default",
"^production",
"{workspaceRoot}/jest.preset.js"
]
}
}
}
},
{
@ -394,7 +500,7 @@
},
{
"file": "libs/shared/cart/state/project.json",
"hash": "a8448393b26be761ecf79cc38746d5aafc18a27f"
"hash": "3b4d33c71ca6e4f66c9aeb6033af81a185df440c"
},
{
"file": "libs/shared/cart/state/README.md",
@ -462,7 +568,33 @@
"file": "libs/shared/cart/state/tsconfig.spec.json",
"hash": "8603a008c3b77e77e142939e83e05e4a1043fbc6"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/shared/cart/state/src/**/*.ts",
"libs/shared/cart/state/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
},
"test": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "libs/shared/cart/state/jest.config.ts",
"passWithNoTests": true
},
"outputs": ["{workspaceRoot}/coverage/libs/shared/cart/state"],
"inputs": [
"default",
"^production",
"{workspaceRoot}/jest.preset.js"
]
}
}
}
},
{
@ -486,7 +618,7 @@
},
{
"file": "libs/shared/product/ui/project.json",
"hash": "07eafbdc2162159856a6bad608469356c0574278"
"hash": "9d65033c934da25789eb1296c837875c5478835e"
},
{
"file": "libs/shared/product/ui/README.md",
@ -502,7 +634,7 @@
},
{
"file": "libs/shared/product/ui/src/lib/product-price/product-price.element.ts",
"hash": "a6d8f7b3db8bab4c3afd48786c09ce2c9b4656b5",
"hash": "d5bce1a0d9c72a0fa16fb42b46cc89d96c751dd1",
"deps": ["shared-jsxify"]
},
{
@ -522,7 +654,33 @@
"file": "libs/shared/product/ui/tsconfig.spec.json",
"hash": "515fdb6e5dd4291dc308b7aee7a45b72c83a1b1d"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/shared/product/ui/src/**/*.ts",
"libs/shared/product/ui/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
},
"test": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "libs/shared/product/ui/jest.config.ts",
"passWithNoTests": true
},
"outputs": ["{workspaceRoot}/coverage/libs/shared/product/ui"],
"inputs": [
"default",
"^production",
"{workspaceRoot}/jest.preset.js"
]
}
}
}
},
{
@ -538,7 +696,7 @@
},
{
"file": "libs/shared/e2e-utils/project.json",
"hash": "244fa3bf318d2b113e9a6b97b8988c5d661b0e38"
"hash": "e077c497a78208159de9916630421b54d559ed29"
},
{
"file": "libs/shared/e2e-utils/README.md",
@ -560,7 +718,20 @@
"file": "libs/shared/e2e-utils/tsconfig.lib.json",
"hash": "0fe9966358eb51092a1668ecb0795b6db52a538b"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/shared/e2e-utils/src/**/*.ts",
"libs/shared/e2e-utils/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
}
}
}
},
{
@ -584,7 +755,7 @@
},
{
"file": "libs/cart/cart-page/project.json",
"hash": "50c94308d4188fedde398bb342ca3b89f6e8b851"
"hash": "71171beb6956bca200936f59feb711d552a3e998"
},
{
"file": "libs/cart/cart-page/README.md",
@ -627,7 +798,33 @@
"file": "libs/cart/cart-page/tsconfig.spec.json",
"hash": "e1535ba9d07c38511f465f5427c9c5a39ab3b174"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/cart/cart-page/src/**/*.ts",
"libs/cart/cart-page/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
},
"test": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "libs/cart/cart-page/jest.config.ts",
"passWithNoTests": true
},
"outputs": ["{workspaceRoot}/coverage/libs/cart/cart-page"],
"inputs": [
"default",
"^production",
"{workspaceRoot}/jest.preset.js"
]
}
}
}
},
{
@ -639,7 +836,7 @@
"files": [
{
"file": "libs/shared/assets/project.json",
"hash": "4fb68b4528e6326aebe04647bc437f7477a94e5c"
"hash": "b93b2d10b9a3045412cacb514e5f23c7b11da141"
},
{
"file": "libs/shared/assets/README.md",
@ -673,7 +870,8 @@
"file": "libs/shared/assets/src/favicon.ico",
"hash": "317ebcb2336e0833a22dddf0ab287849f26fda57"
}
]
],
"targets": {}
}
},
{
@ -701,7 +899,7 @@
},
{
"file": "libs/shared/header/project.json",
"hash": "725e63d4be61a51b77fb25000400e6ea6c7ce139"
"hash": "14708a09900f151639b589916200638b2dcb794a"
},
{
"file": "libs/shared/header/README.md",
@ -721,7 +919,7 @@
},
{
"file": "libs/shared/header/src/lib/header/header.element.ts",
"hash": "5123c6b355b86e8872afb0c65a1745c9c70d40b0",
"hash": "f1cd2d856aa0551ab01c99bb457f0c82bafcb32a",
"deps": ["shared-jsxify"]
},
{
@ -741,7 +939,33 @@
"file": "libs/shared/header/tsconfig.spec.json",
"hash": "e1535ba9d07c38511f465f5427c9c5a39ab3b174"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/shared/header/src/**/*.ts",
"libs/shared/header/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
},
"test": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "libs/shared/header/jest.config.ts",
"passWithNoTests": true
},
"outputs": ["{workspaceRoot}/coverage/libs/shared/header"],
"inputs": [
"default",
"^production",
"{workspaceRoot}/jest.preset.js"
]
}
}
}
},
{
@ -761,7 +985,7 @@
},
{
"file": "libs/shared/jsxify/project.json",
"hash": "01db4dd77ff7eb12a1af62d040df77ebb54a4bf0"
"hash": "66516b22ad23916198867727fbe745c5c4cf948a"
},
{
"file": "libs/shared/jsxify/README.md",
@ -783,7 +1007,20 @@
"file": "libs/shared/jsxify/tsconfig.lib.json",
"hash": "0fe9966358eb51092a1668ecb0795b6db52a538b"
}
],
"targets": {
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/shared/jsxify/src/**/*.ts",
"libs/shared/jsxify/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
}
}
}
},
{
@ -795,7 +1032,7 @@
"files": [
{
"file": "libs/shared/styles/project.json",
"hash": "47566a51c14545b7fa381bbfddd4e36217c80c69"
"hash": "cc7c3f7a747b90917f018d6ee7b5c6005ca235f8"
},
{
"file": "libs/shared/styles/README.md",
@ -809,7 +1046,8 @@
"file": "libs/shared/styles/src/lib/global.scss",
"hash": "55caa35d877ea8028f97134fa985a0b7e772f963"
}
]
],
"targets": {}
}
},
{
@ -830,7 +1068,7 @@
},
{
"file": "apps/products-e2e/project.json",
"hash": "957ee425995fa9c2ba8158c112ee2a4cd96b7b84"
"hash": "04a971a513446ab9f533d2bc5b71f4c0f6701026"
},
{
"file": "apps/products-e2e/src/e2e/app.cy.ts",
@ -857,7 +1095,31 @@
"file": "apps/products-e2e/tsconfig.json",
"hash": "cc509a730e12498509bb7475f6f54b1a18021191"
}
]
],
"targets": {
"e2e": {
"executor": "@nrwl/cypress:cypress",
"options": {
"cypressConfig": "apps/products-e2e/cypress.config.ts",
"devServerTarget": "products:serve",
"testingType": "e2e"
},
"configurations": {
"production": {
"devServerTarget": "products:serve:production"
}
},
"inputs": ["default", "^production"]
},
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": ["apps/products-e2e/**/*.{js,ts}"]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
}
}
}
},
{
@ -878,7 +1140,7 @@
},
{
"file": "apps/cart-e2e/project.json",
"hash": "02852d8c5cc3c57e82bdfe47858d97b36a3a1cb6"
"hash": "a11acd168cdf5221917f96403e470b585420ead9"
},
{
"file": "apps/cart-e2e/src/e2e/app.cy.ts",
@ -905,7 +1167,31 @@
"file": "apps/cart-e2e/tsconfig.json",
"hash": "cc509a730e12498509bb7475f6f54b1a18021191"
}
]
],
"targets": {
"e2e": {
"executor": "@nrwl/cypress:cypress",
"options": {
"cypressConfig": "apps/cart-e2e/cypress.config.ts",
"devServerTarget": "cart:serve",
"testingType": "e2e"
},
"configurations": {
"production": {
"devServerTarget": "cart:serve:production"
}
},
"inputs": ["default", "^production"]
},
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": ["apps/cart-e2e/**/*.{ts,tsx,js,jsx}"]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
}
}
}
},
{
@ -929,7 +1215,7 @@
},
{
"file": "apps/products/project.json",
"hash": "4dfd29466f1cbb8bc8159f00629272c8d7823914"
"hash": "c9dd3f0c4c4bf71a315c90c02e1f182241337532"
},
{
"file": "apps/products/src/_redirects",
@ -1019,9 +1305,201 @@
"file": "apps/products/tsconfig.spec.json",
"hash": "b6347c6f667d5628388e11529377a125758fbe61"
}
],
"targets": {
"build": {
"executor": "@angular-devkit/build-angular:browser",
"options": {
"aot": true,
"outputPath": "dist/apps/products",
"index": "apps/products/src/index.html",
"main": "apps/products/src/main.ts",
"polyfills": "apps/products/src/polyfills.ts",
"tsConfig": "apps/products/tsconfig.app.json",
"assets": [
"apps/products/src/_redirects",
{
"input": "libs/shared/assets/src/assets",
"glob": "**/*",
"output": "assets"
},
{
"input": "libs/shared/assets/src",
"glob": "favicon.ico",
"output": "."
}
],
"styles": [
"libs/shared/styles/src/index.scss",
"libs/shared/header/index.scss",
"node_modules/normalize.css/normalize.css"
],
"scripts": []
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "apps/products/src/environments/environment.ts",
"with": "apps/products/src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb"
}
]
}
},
"outputs": ["{options.outputPath}"],
"dependsOn": ["^build"],
"inputs": ["production", "^production"]
},
"serve": {
"executor": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "products:build"
},
"configurations": {
"production": {
"browserTarget": "products:build:production"
}
}
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
"options": {
"browserTarget": "products:build"
}
},
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"apps/products/src/**/*.ts",
"apps/products/src/**/*.html"
]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
},
"test": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "apps/products/jest.config.ts",
"passWithNoTests": true
},
"outputs": ["{workspaceRoot}/coverage/apps/products"],
"inputs": [
"default",
"^production",
"{workspaceRoot}/jest.preset.js"
]
},
"deploy": {
"executor": "nx:run-commands",
"options": {
"commands": [
{
"command": "npx ts-node --project tools/tsconfig.tools.json tools/scripts/deploy --siteName nrwl-nx-examples-products --outputPath dist/apps/products"
}
]
}
}
}
}
},
{
"name": "new-lib",
"type": "lib",
"data": {
"tags": [],
"root": "libs/new-lib",
"files": [
{
"file": "libs/new-lib/.eslintrc.json",
"hash": "69f0f5128f733f3ef756c81439f0548eb3f314ff"
},
{
"file": "libs/new-lib/jest.config.ts",
"hash": "4920380a6eaa2ffaa6ac16eafcccb60622ab0dc0"
},
{
"file": "libs/new-lib/project.json",
"hash": "12563cc2fb5447cd596a4a46766ac0e089c35e36"
},
{
"file": "libs/new-lib/README.md",
"hash": "ae28060a863433273a37b6a6818126817b405add"
},
{
"file": "libs/new-lib/src/index.ts",
"hash": "001f7c36454094a6f9a387e47b14445eab276fce"
},
{
"file": "libs/new-lib/src/lib/new-lib.module.ts",
"hash": "4936692048161ebc3cfbf0d146327a7b3c9de46e",
"deps": ["npm:@angular/core", "npm:@angular/common"]
},
{
"file": "libs/new-lib/src/test-setup.ts",
"hash": "1100b3e8a6ed08f4b5c27a96471846d57023c320",
"deps": ["npm:jest-preset-angular"]
},
{
"file": "libs/new-lib/tsconfig.json",
"hash": "1c995b83bf3715a370457c4296b1a11f40572cff"
},
{
"file": "libs/new-lib/tsconfig.lib.json",
"hash": "8e00439a4ac91e9d14eae4b313f59c1d435003ee"
},
{
"file": "libs/new-lib/tsconfig.spec.json",
"hash": "c5db02778f96a2a200d787c0a7b376fe0d6c36f7"
}
],
"targets": {
"test": {
"executor": "@nrwl/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "libs/new-lib/jest.config.ts",
"passWithNoTests": true
},
"inputs": [
"default",
"^production",
"{workspaceRoot}/jest.preset.js"
]
},
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": [
"libs/new-lib/**/*.ts",
"libs/new-lib/**/*.html"
]
},
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
}
}
}
},
{
"name": "cart",
"type": "app",
@ -1047,7 +1525,7 @@
},
{
"file": "apps/cart/project.json",
"hash": "4a26f9eff1fa418de3843ed2e23f6109f1ae64fc"
"hash": "d2d823c49d47b0c373c1e639acaa2d939a0bdfb1"
},
{
"file": "apps/cart/src/_redirects",
@ -1060,8 +1538,13 @@
},
{
"file": "apps/cart/src/app/app.tsx",
"hash": "4206822dc52f06828ef3192e385bad60262d8a40",
"deps": ["npm:react-router-dom", "shared-header", "cart-cart-page"]
"hash": "e971864bdab1bea4c48550c2ab1d9e0e8489e753",
"deps": [
"npm:react-router-dom",
"new-lib",
"shared-header",
"cart-cart-page"
]
},
{
"file": "apps/cart/src/assets/.gitkeep",
@ -1109,7 +1592,121 @@
"file": "apps/cart/tsconfig.spec.json",
"hash": "99a0ce08de0901250105669917e582aba6e8697e"
}
],
"targets": {
"build": {
"executor": "@nrwl/webpack:webpack",
"options": {
"outputPath": "dist/apps/cart",
"webpackConfig": "@nrwl/react/plugins/webpack",
"index": "apps/cart/src/index.html",
"main": "apps/cart/src/main.tsx",
"polyfills": "apps/cart/src/polyfills.ts",
"tsConfig": "apps/cart/tsconfig.app.json",
"assets": [
"apps/cart/src/_redirects",
{
"input": "libs/shared/assets/src/assets",
"glob": "**/*",
"output": "assets"
},
{
"input": "libs/shared/assets/src",
"glob": "favicon.ico",
"output": ""
}
],
"maxWorkers": 8,
"styles": [
"libs/shared/styles/src/index.scss",
"libs/shared/header/index.scss",
"node_modules/normalize.css/normalize.css"
],
"scripts": [],
"buildLibsFromSource": true
},
"configurations": {
"production": {
"fileReplacements": [
{
"replace": "apps/cart/src/environments/environment.ts",
"with": "apps/cart/src/environments/environment.prod.ts"
}
],
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"extractLicenses": true,
"vendorChunk": false,
"budgets": [
{
"type": "initial",
"maximumWarning": "2mb",
"maximumError": "5mb"
}
]
},
"development": {
"extractLicenses": false,
"optimization": false,
"sourceMap": true,
"vendorChunk": true
}
},
"outputs": ["{options.outputPath}"],
"defaultConfiguration": "production",
"dependsOn": ["^build"],
"inputs": ["production", "^production"]
},
"serve": {
"executor": "@nrwl/webpack:dev-server",
"options": {
"buildTarget": "cart:build"
},
"configurations": {
"production": {
"buildTarget": "cart:build:production"
},
"development": {
"buildTarget": "cart:build:development"
}
},
"defaultConfiguration": "development"
},
"lint": {
"executor": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": ["apps/cart/**/*.{ts,tsx,js,jsx}"]
},
"outputs": ["{options.outputFile}"],
"inputs": ["default", "{workspaceRoot}/.eslintrc.json"]
},
"test": {
"executor": "@nrwl/jest:jest",
"options": {
"jestConfig": "apps/cart/jest.config.ts",
"passWithNoTests": true
},
"outputs": ["{workspaceRoot}/coverage/apps/cart"],
"inputs": [
"default",
"^production",
"{workspaceRoot}/jest.preset.js"
]
},
"deploy": {
"executor": "nx:run-commands",
"options": {
"commands": [
{
"command": "npx ts-node --project tools/tsconfig.tools.json tools/scripts/deploy --siteName nrwl-nx-examples-cart --outputPath dist/apps/cart"
}
]
}
}
}
}
}
],
@ -1202,12 +1799,20 @@
],
"shared-assets": [],
"shared-header": [
{ "source": "shared-header", "target": "shared-jsxify", "type": "static" }
{
"source": "shared-header",
"target": "shared-jsxify",
"type": "static"
}
],
"shared-jsxify": [],
"shared-styles": [],
"products-e2e": [
{ "source": "products-e2e", "target": "products", "type": "implicit" },
{
"source": "products-e2e",
"target": "products",
"type": "implicit"
},
{
"source": "products-e2e",
"target": "shared-e2e-utils",
@ -1215,13 +1820,33 @@
}
],
"cart-e2e": [
{ "source": "cart-e2e", "target": "cart", "type": "implicit" },
{ "source": "cart-e2e", "target": "shared-e2e-utils", "type": "static" }
{
"source": "cart-e2e",
"target": "cart",
"type": "implicit"
},
{
"source": "cart-e2e",
"target": "shared-e2e-utils",
"type": "static"
}
],
"products": [
{ "source": "products", "target": "shared-assets", "type": "implicit" },
{ "source": "products", "target": "shared-styles", "type": "implicit" },
{ "source": "products", "target": "shared-header", "type": "static" },
{
"source": "products",
"target": "shared-assets",
"type": "implicit"
},
{
"source": "products",
"target": "shared-styles",
"type": "implicit"
},
{
"source": "products",
"target": "shared-header",
"type": "static"
},
{
"source": "products",
"target": "products-home-page",
@ -1233,14 +1858,39 @@
"type": "static"
}
],
"new-lib": [],
"cart": [
{ "source": "cart", "target": "shared-assets", "type": "implicit" },
{ "source": "cart", "target": "shared-styles", "type": "implicit" },
{ "source": "cart", "target": "shared-header", "type": "static" },
{ "source": "cart", "target": "cart-cart-page", "type": "static" }
{
"source": "cart",
"target": "shared-assets",
"type": "implicit"
},
{
"source": "cart",
"target": "shared-styles",
"type": "implicit"
},
{
"source": "cart",
"target": "new-lib",
"type": "static"
},
{
"source": "cart",
"target": "shared-header",
"type": "static"
},
{
"source": "cart",
"target": "cart-cart-page",
"type": "static"
}
]
},
"layout": { "appsDir": "apps", "libsDir": "libs" },
"layout": {
"appsDir": "apps",
"libsDir": "libs"
},
"affected": [],
"focus": null,
"groupByFolder": false,

View File

@ -1,119 +0,0 @@
{
"hash": "1c2b69586aa096dc5e42eb252d0b5bfb94f20dc969a1e7b6f381a3b13add6928",
"layout": {
"appsDir": "apps",
"libsDir": "libs"
},
"projects": [
{
"name": "app1",
"type": "app",
"data": {
"tags": [],
"root": "apps/app1"
}
},
{
"name": "app2",
"type": "app",
"data": {
"tags": [],
"root": "apps/app2"
}
},
{
"name": "lib1",
"type": "app",
"data": {
"tags": [],
"root": "libs/lib1"
}
},
{
"name": "lib2",
"type": "app",
"data": {
"tags": [],
"root": "libs/lib2"
}
},
{
"name": "lib3",
"type": "app",
"data": {
"tags": [],
"root": "libs/lib3"
}
},
{
"name": "lib4",
"type": "app",
"data": {
"tags": [],
"root": "libs/lib4"
}
},
{
"name": "lib5",
"type": "app",
"data": {
"tags": [],
"root": "libs/lib5"
}
}
],
"dependencies": {
"app1": [
{
"type": "static",
"source": "app1",
"target": "lib1"
}
],
"app2": [
{
"type": "static",
"source": "app2",
"target": "lib2"
},
{
"type": "static",
"source": "app2",
"target": "lib5"
}
],
"lib1": [
{
"type": "static",
"source": "lib1",
"target": "lib3"
}
],
"lib2": [
{
"type": "static",
"source": "lib2",
"target": "lib3"
}
],
"lib3": [
{
"type": "static",
"source": "lib3",
"target": "lib4"
}
],
"lib4": [],
"lib5": [
{
"type": "static",
"source": "lib5",
"target": "lib4"
}
]
},
"affected": [],
"changes": {
"added": []
}
}

View File

@ -1,119 +0,0 @@
{
"hash": "1c2b69586aa096dc5e42eb252d0b5bfb94f20dc969a1e7b6f381a3b13add6928",
"layout": {
"appsDir": "nested-workspace/apps",
"libsDir": "nested-workspace/libs"
},
"projects": [
{
"name": "app1",
"type": "app",
"data": {
"tags": [],
"root": "nested-workspace/apps/app1"
}
},
{
"name": "app2",
"type": "app",
"data": {
"tags": [],
"root": "nested-workspace/apps/app2"
}
},
{
"name": "lib1",
"type": "lib",
"data": {
"tags": [],
"root": "nested-workspace/libs/lib1"
}
},
{
"name": "lib2",
"type": "lib",
"data": {
"tags": [],
"root": "nested-workspace/libs/lib2"
}
},
{
"name": "lib3",
"type": "lib",
"data": {
"tags": [],
"root": "nested-workspace/libs/scope/lib3"
}
},
{
"name": "lib4",
"type": "lib",
"data": {
"tags": [],
"root": "nested-workspace/libs/scope/lib4"
}
},
{
"name": "lib5",
"type": "lib",
"data": {
"tags": [],
"root": "nested-workspace/libs/lib5"
}
}
],
"dependencies": {
"app1": [
{
"type": "static",
"source": "app1",
"target": "lib1"
}
],
"app2": [
{
"type": "static",
"source": "app2",
"target": "lib2"
},
{
"type": "static",
"source": "app2",
"target": "lib5"
}
],
"lib1": [
{
"type": "static",
"source": "lib1",
"target": "lib3"
}
],
"lib2": [
{
"type": "static",
"source": "lib2",
"target": "lib3"
}
],
"lib3": [
{
"type": "static",
"source": "lib3",
"target": "lib4"
}
],
"lib4": [],
"lib5": [
{
"type": "static",
"source": "lib5",
"target": "lib4"
}
]
},
"affected": [],
"changes": {
"added": []
}
}

View File

@ -1,55 +0,0 @@
{
"hash": "1c2b69586aa096dc5e42eb252d0b5bfb94f20dc969a1e7b6f381a3b13add6928",
"layout": { "appsDir": "apps", "libsDir": "libs" },
"projects": [
{
"name": "sub/app-e2e",
"type": "e2e",
"data": { "tags": [], "root": "apps/sub/app-e2e" }
},
{
"name": "webapp-e2e",
"type": "e2e",
"data": { "tags": [], "root": "apps/webapp-e2e" }
},
{
"name": "first-e2e",
"type": "e2e",
"data": { "tags": [], "root": "apps/first-e2e" }
},
{
"name": "sub-app",
"type": "app",
"data": { "tags": [], "root": "apps/sub/app" }
},
{
"name": "webapp",
"type": "app",
"data": { "tags": [], "root": "apps/webapp" }
},
{
"name": "first",
"type": "app",
"data": { "tags": [], "root": "apps/first" }
}
],
"dependencies": {
"sub/app-e2e": [
{ "type": "implicit", "source": "sub/app-e2e", "target": "sub-app" }
],
"webapp-e2e": [
{ "type": "implicit", "source": "webapp-e2e", "target": "webapp" }
],
"first-e2e": [
{ "type": "implicit", "source": "first-e2e", "target": "first" }
],
"sub-app": [],
"webapp": [],
"first": []
},
"changes": { "added": [] },
"affected": [],
"focus": null,
"exclude": [],
"groupByFolder": false
}

View File

@ -0,0 +1,745 @@
{
"taskGraphs": {
"products-product-detail-page:lint": {
"roots": ["products-product-detail-page:lint"],
"tasks": {
"products-product-detail-page:lint": {
"id": "products-product-detail-page:lint",
"target": {
"project": "products-product-detail-page",
"target": "lint"
},
"projectRoot": "libs/products/product-detail-page",
"overrides": {}
}
},
"dependencies": {
"products-product-detail-page:lint": []
}
},
"products-product-detail-page:test": {
"roots": ["products-product-detail-page:test"],
"tasks": {
"products-product-detail-page:test": {
"id": "products-product-detail-page:test",
"target": {
"project": "products-product-detail-page",
"target": "test"
},
"projectRoot": "libs/products/product-detail-page",
"overrides": {}
}
},
"dependencies": {
"products-product-detail-page:test": []
}
},
"shared-product-state:lint": {
"roots": ["shared-product-state:lint"],
"tasks": {
"shared-product-state:lint": {
"id": "shared-product-state:lint",
"target": {
"project": "shared-product-state",
"target": "lint"
},
"projectRoot": "libs/shared/product/state",
"overrides": {}
}
},
"dependencies": {
"shared-product-state:lint": []
}
},
"shared-product-state:test": {
"roots": ["shared-product-state:test"],
"tasks": {
"shared-product-state:test": {
"id": "shared-product-state:test",
"target": {
"project": "shared-product-state",
"target": "test"
},
"projectRoot": "libs/shared/product/state",
"overrides": {}
}
},
"dependencies": {
"shared-product-state:test": []
}
},
"shared-product-types:lint": {
"roots": ["shared-product-types:lint"],
"tasks": {
"shared-product-types:lint": {
"id": "shared-product-types:lint",
"target": {
"project": "shared-product-types",
"target": "lint"
},
"projectRoot": "libs/shared/product/types",
"overrides": {}
}
},
"dependencies": {
"shared-product-types:lint": []
}
},
"shared-product-data:lint": {
"roots": ["shared-product-data:lint"],
"tasks": {
"shared-product-data:lint": {
"id": "shared-product-data:lint",
"target": {
"project": "shared-product-data",
"target": "lint"
},
"projectRoot": "libs/shared/product/data",
"overrides": {}
}
},
"dependencies": {
"shared-product-data:lint": []
}
},
"products-home-page:lint": {
"roots": ["products-home-page:lint"],
"tasks": {
"products-home-page:lint": {
"id": "products-home-page:lint",
"target": {
"project": "products-home-page",
"target": "lint"
},
"projectRoot": "libs/products/home-page",
"overrides": {}
}
},
"dependencies": {
"products-home-page:lint": []
}
},
"products-home-page:test": {
"roots": ["products-home-page:test"],
"tasks": {
"products-home-page:test": {
"id": "products-home-page:test",
"target": {
"project": "products-home-page",
"target": "test"
},
"projectRoot": "libs/products/home-page",
"overrides": {}
}
},
"dependencies": {
"products-home-page:test": []
}
},
"shared-cart-state:lint": {
"roots": ["shared-cart-state:lint"],
"tasks": {
"shared-cart-state:lint": {
"id": "shared-cart-state:lint",
"target": {
"project": "shared-cart-state",
"target": "lint"
},
"projectRoot": "libs/shared/cart/state",
"overrides": {}
}
},
"dependencies": {
"shared-cart-state:lint": []
}
},
"shared-cart-state:test": {
"roots": ["shared-cart-state:test"],
"tasks": {
"shared-cart-state:test": {
"id": "shared-cart-state:test",
"target": {
"project": "shared-cart-state",
"target": "test"
},
"projectRoot": "libs/shared/cart/state",
"overrides": {}
}
},
"dependencies": {
"shared-cart-state:test": []
}
},
"shared-product-ui:lint": {
"roots": ["shared-product-ui:lint"],
"tasks": {
"shared-product-ui:lint": {
"id": "shared-product-ui:lint",
"target": {
"project": "shared-product-ui",
"target": "lint"
},
"projectRoot": "libs/shared/product/ui",
"overrides": {}
}
},
"dependencies": {
"shared-product-ui:lint": []
}
},
"shared-product-ui:test": {
"roots": ["shared-product-ui:test"],
"tasks": {
"shared-product-ui:test": {
"id": "shared-product-ui:test",
"target": {
"project": "shared-product-ui",
"target": "test"
},
"projectRoot": "libs/shared/product/ui",
"overrides": {}
}
},
"dependencies": {
"shared-product-ui:test": []
}
},
"shared-e2e-utils:lint": {
"roots": ["shared-e2e-utils:lint"],
"tasks": {
"shared-e2e-utils:lint": {
"id": "shared-e2e-utils:lint",
"target": {
"project": "shared-e2e-utils",
"target": "lint"
},
"projectRoot": "libs/shared/e2e-utils",
"overrides": {}
}
},
"dependencies": {
"shared-e2e-utils:lint": []
}
},
"cart-cart-page:lint": {
"roots": ["cart-cart-page:lint"],
"tasks": {
"cart-cart-page:lint": {
"id": "cart-cart-page:lint",
"target": {
"project": "cart-cart-page",
"target": "lint"
},
"projectRoot": "libs/cart/cart-page",
"overrides": {}
}
},
"dependencies": {
"cart-cart-page:lint": []
}
},
"cart-cart-page:test": {
"roots": ["cart-cart-page:test"],
"tasks": {
"cart-cart-page:test": {
"id": "cart-cart-page:test",
"target": {
"project": "cart-cart-page",
"target": "test"
},
"projectRoot": "libs/cart/cart-page",
"overrides": {}
}
},
"dependencies": {
"cart-cart-page:test": []
}
},
"shared-header:lint": {
"roots": ["shared-header:lint"],
"tasks": {
"shared-header:lint": {
"id": "shared-header:lint",
"target": {
"project": "shared-header",
"target": "lint"
},
"projectRoot": "libs/shared/header",
"overrides": {}
}
},
"dependencies": {
"shared-header:lint": []
}
},
"shared-header:test": {
"roots": ["shared-header:test"],
"tasks": {
"shared-header:test": {
"id": "shared-header:test",
"target": {
"project": "shared-header",
"target": "test"
},
"projectRoot": "libs/shared/header",
"overrides": {}
}
},
"dependencies": {
"shared-header:test": []
}
},
"shared-jsxify:lint": {
"roots": ["shared-jsxify:lint"],
"tasks": {
"shared-jsxify:lint": {
"id": "shared-jsxify:lint",
"target": {
"project": "shared-jsxify",
"target": "lint"
},
"projectRoot": "libs/shared/jsxify",
"overrides": {}
}
},
"dependencies": {
"shared-jsxify:lint": []
}
},
"products-e2e:e2e": {
"roots": ["products-e2e:e2e"],
"tasks": {
"products-e2e:e2e": {
"id": "products-e2e:e2e",
"target": {
"project": "products-e2e",
"target": "e2e"
},
"projectRoot": "apps/products-e2e",
"overrides": {}
}
},
"dependencies": {
"products-e2e:e2e": []
}
},
"products-e2e:e2e:production": {
"roots": ["products-e2e:e2e:production"],
"tasks": {
"products-e2e:e2e:production": {
"id": "products-e2e:e2e:production",
"target": {
"project": "products-e2e",
"target": "e2e",
"configuration": "production"
},
"projectRoot": "apps/products-e2e",
"overrides": {}
}
},
"dependencies": {
"products-e2e:e2e:production": []
}
},
"products-e2e:lint": {
"roots": ["products-e2e:lint"],
"tasks": {
"products-e2e:lint": {
"id": "products-e2e:lint",
"target": {
"project": "products-e2e",
"target": "lint"
},
"projectRoot": "apps/products-e2e",
"overrides": {}
}
},
"dependencies": {
"products-e2e:lint": []
}
},
"cart-e2e:e2e": {
"roots": ["cart-e2e:e2e"],
"tasks": {
"cart-e2e:e2e": {
"id": "cart-e2e:e2e",
"target": {
"project": "cart-e2e",
"target": "e2e"
},
"projectRoot": "apps/cart-e2e",
"overrides": {}
}
},
"dependencies": {
"cart-e2e:e2e": []
}
},
"cart-e2e:e2e:production": {
"roots": ["cart-e2e:e2e:production"],
"tasks": {
"cart-e2e:e2e:production": {
"id": "cart-e2e:e2e:production",
"target": {
"project": "cart-e2e",
"target": "e2e",
"configuration": "production"
},
"projectRoot": "apps/cart-e2e",
"overrides": {}
}
},
"dependencies": {
"cart-e2e:e2e:production": []
}
},
"cart-e2e:lint": {
"roots": ["cart-e2e:lint"],
"tasks": {
"cart-e2e:lint": {
"id": "cart-e2e:lint",
"target": {
"project": "cart-e2e",
"target": "lint"
},
"projectRoot": "apps/cart-e2e",
"overrides": {}
}
},
"dependencies": {
"cart-e2e:lint": []
}
},
"products:build": {
"roots": ["products:build"],
"tasks": {
"products:build": {
"id": "products:build",
"target": {
"project": "products",
"target": "build"
},
"projectRoot": "apps/products",
"overrides": {}
}
},
"dependencies": {
"products:build": []
}
},
"products:build:production": {
"roots": ["products:build:production"],
"tasks": {
"products:build:production": {
"id": "products:build:production",
"target": {
"project": "products",
"target": "build",
"configuration": "production"
},
"projectRoot": "apps/products",
"overrides": {}
}
},
"dependencies": {
"products:build:production": []
}
},
"products:serve": {
"roots": ["products:serve"],
"tasks": {
"products:serve": {
"id": "products:serve",
"target": {
"project": "products",
"target": "serve"
},
"projectRoot": "apps/products",
"overrides": {}
}
},
"dependencies": {
"products:serve": []
}
},
"products:serve:production": {
"roots": ["products:serve:production"],
"tasks": {
"products:serve:production": {
"id": "products:serve:production",
"target": {
"project": "products",
"target": "serve",
"configuration": "production"
},
"projectRoot": "apps/products",
"overrides": {}
}
},
"dependencies": {
"products:serve:production": []
}
},
"products:extract-i18n": {
"roots": ["products:extract-i18n"],
"tasks": {
"products:extract-i18n": {
"id": "products:extract-i18n",
"target": {
"project": "products",
"target": "extract-i18n"
},
"projectRoot": "apps/products",
"overrides": {}
}
},
"dependencies": {
"products:extract-i18n": []
}
},
"products:lint": {
"roots": ["products:lint"],
"tasks": {
"products:lint": {
"id": "products:lint",
"target": {
"project": "products",
"target": "lint"
},
"projectRoot": "apps/products",
"overrides": {}
}
},
"dependencies": {
"products:lint": []
}
},
"products:test": {
"roots": ["products:test"],
"tasks": {
"products:test": {
"id": "products:test",
"target": {
"project": "products",
"target": "test"
},
"projectRoot": "apps/products",
"overrides": {}
}
},
"dependencies": {
"products:test": []
}
},
"products:deploy": {
"roots": ["products:deploy"],
"tasks": {
"products:deploy": {
"id": "products:deploy",
"target": {
"project": "products",
"target": "deploy"
},
"projectRoot": "apps/products",
"overrides": {}
}
},
"dependencies": {
"products:deploy": []
}
},
"new-lib:test": {
"roots": ["new-lib:test"],
"tasks": {
"new-lib:test": {
"id": "new-lib:test",
"target": {
"project": "new-lib",
"target": "test"
},
"projectRoot": "libs/new-lib",
"overrides": {}
}
},
"dependencies": {
"new-lib:test": []
}
},
"new-lib:lint": {
"roots": ["new-lib:lint"],
"tasks": {
"new-lib:lint": {
"id": "new-lib:lint",
"target": {
"project": "new-lib",
"target": "lint"
},
"projectRoot": "libs/new-lib",
"overrides": {}
}
},
"dependencies": {
"new-lib:lint": []
}
},
"cart:build": {
"roots": ["cart:build:production"],
"tasks": {
"cart:build:production": {
"id": "cart:build:production",
"target": {
"project": "cart",
"target": "build",
"configuration": "production"
},
"projectRoot": "apps/cart",
"overrides": {}
}
},
"dependencies": {
"cart:build:production": []
}
},
"cart:build:production": {
"roots": ["cart:build:production"],
"tasks": {
"cart:build:production": {
"id": "cart:build:production",
"target": {
"project": "cart",
"target": "build",
"configuration": "production"
},
"projectRoot": "apps/cart",
"overrides": {}
}
},
"dependencies": {
"cart:build:production": []
}
},
"cart:build:development": {
"roots": ["cart:build:development"],
"tasks": {
"cart:build:development": {
"id": "cart:build:development",
"target": {
"project": "cart",
"target": "build",
"configuration": "development"
},
"projectRoot": "apps/cart",
"overrides": {}
}
},
"dependencies": {
"cart:build:development": []
}
},
"cart:serve": {
"roots": ["cart:serve:development"],
"tasks": {
"cart:serve:development": {
"id": "cart:serve:development",
"target": {
"project": "cart",
"target": "serve",
"configuration": "development"
},
"projectRoot": "apps/cart",
"overrides": {}
}
},
"dependencies": {
"cart:serve:development": []
}
},
"cart:serve:production": {
"roots": ["cart:serve:production"],
"tasks": {
"cart:serve:production": {
"id": "cart:serve:production",
"target": {
"project": "cart",
"target": "serve",
"configuration": "production"
},
"projectRoot": "apps/cart",
"overrides": {}
}
},
"dependencies": {
"cart:serve:production": []
}
},
"cart:serve:development": {
"roots": ["cart:serve:development"],
"tasks": {
"cart:serve:development": {
"id": "cart:serve:development",
"target": {
"project": "cart",
"target": "serve",
"configuration": "development"
},
"projectRoot": "apps/cart",
"overrides": {}
}
},
"dependencies": {
"cart:serve:development": []
}
},
"cart:lint": {
"roots": ["cart:lint"],
"tasks": {
"cart:lint": {
"id": "cart:lint",
"target": {
"project": "cart",
"target": "lint"
},
"projectRoot": "apps/cart",
"overrides": {}
}
},
"dependencies": {
"cart:lint": []
}
},
"cart:test": {
"roots": ["cart:test"],
"tasks": {
"cart:test": {
"id": "cart:test",
"target": {
"project": "cart",
"target": "test"
},
"projectRoot": "apps/cart",
"overrides": {}
}
},
"dependencies": {
"cart:test": []
}
},
"cart:deploy": {
"roots": ["cart:deploy"],
"tasks": {
"cart:deploy": {
"id": "cart:deploy",
"target": {
"project": "cart",
"target": "deploy"
},
"projectRoot": "apps/cart",
"overrides": {}
}
},
"dependencies": {
"cart:deploy": []
}
}
}
}

View File

@ -48,7 +48,8 @@ function writeFile() {
return {
id,
label: id,
url: join('assets/project-graphs/', filename),
projectGraphUrl: join('assets/project-graphs/', filename),
taskGraphUrl: join('assets/task-graphs/', filename),
};
});
} catch {