From 0289e2cad7447731794603b226521346740af730 Mon Sep 17 00:00:00 2001 From: James Henry Date: Wed, 21 Jul 2021 15:28:15 +0400 Subject: [PATCH] chore(core): refactor executors to always read from cached project graph --- .../webpack-browser/webpack-browser.impl.ts | 44 ++++++++----------- .../delegate-build/delegate-build.impl.ts | 6 +-- .../src/executors/package/package.impl.ts | 5 +-- .../next/src/executors/build/build.impl.ts | 5 +-- .../build/lib/create-package-json.ts | 4 +- .../next/src/executors/export/export.impl.ts | 5 +-- .../next/src/executors/server/server.impl.ts | 5 +-- .../src/executors/build/build.impl.spec.ts | 4 +- .../node/src/executors/build/build.impl.ts | 4 +- .../executors/package/package.impl.spec.ts | 8 ++-- .../src/executors/package/package.impl.ts | 5 +-- .../web/src/executors/build/build.impl.ts | 5 +-- .../executors/dev-server/dev-server.impl.ts | 5 +-- .../web/src/executors/package/package.impl.ts | 5 +-- 14 files changed, 47 insertions(+), 63 deletions(-) diff --git a/packages/angular/src/builders/webpack-browser/webpack-browser.impl.ts b/packages/angular/src/builders/webpack-browser/webpack-browser.impl.ts index 70f4c00324872..afab6a3f06a1c 100644 --- a/packages/angular/src/builders/webpack-browser/webpack-browser.impl.ts +++ b/packages/angular/src/builders/webpack-browser/webpack-browser.impl.ts @@ -13,7 +13,7 @@ import { } from '@nrwl/workspace/src/utils/buildable-libs-utils'; import { joinPathFragments } from '@nrwl/devkit'; import { join } from 'path'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { Schema } from '@angular-devkit/build-angular/src/browser/schema'; import { switchMap } from 'rxjs/operators'; import { existsSync } from 'fs'; @@ -80,32 +80,26 @@ function run( options: BrowserBuilderSchema, context: BuilderContext ): Observable { - return from(createProjectGraphAsync()).pipe( - switchMap((projGraph) => { - const { target, dependencies } = calculateProjectDependencies( - projGraph, - context - ); + const { target, dependencies } = calculateProjectDependencies( + readCachedProjectGraph(), + context + ); - options.tsConfig = createTmpTsConfig( - join(context.workspaceRoot, options.tsConfig), - context.workspaceRoot, - target.data.root, - dependencies - ); + options.tsConfig = createTmpTsConfig( + join(context.workspaceRoot, options.tsConfig), + context.workspaceRoot, + target.data.root, + dependencies + ); - return of( - checkDependentProjectsHaveBeenBuilt(context, dependencies) - ).pipe( - switchMap((result) => { - if (result) { - return buildApp(options, context); - } else { - // just pass on the result - return of({ success: false }); - } - }) - ); + return of(checkDependentProjectsHaveBeenBuilt(context, dependencies)).pipe( + switchMap((result) => { + if (result) { + return buildApp(options, context); + } else { + // just pass on the result + return of({ success: false }); + } }) ); } diff --git a/packages/angular/src/executors/delegate-build/delegate-build.impl.ts b/packages/angular/src/executors/delegate-build/delegate-build.impl.ts index 424db6d7ef12b..25277dc64f1be 100644 --- a/packages/angular/src/executors/delegate-build/delegate-build.impl.ts +++ b/packages/angular/src/executors/delegate-build/delegate-build.impl.ts @@ -4,7 +4,7 @@ import { parseTargetString, runExecutor, } from '@nrwl/devkit'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { calculateProjectDependencies, checkDependentProjectsHaveBeenBuilt, @@ -16,10 +16,8 @@ export async function* delegateBuildExecutor( options: DelegateBuildExecutorSchema, context: ExecutorContext ) { - const projGraph = await createProjectGraphAsync(); - const { target, dependencies } = calculateProjectDependencies( - projGraph, + readCachedProjectGraph(), context.root, context.projectName, context.targetName, diff --git a/packages/angular/src/executors/package/package.impl.ts b/packages/angular/src/executors/package/package.impl.ts index 179252046c25c..ad54e892425cf 100644 --- a/packages/angular/src/executors/package/package.impl.ts +++ b/packages/angular/src/executors/package/package.impl.ts @@ -1,6 +1,6 @@ import * as ng from '@angular/compiler-cli'; import type { ExecutorContext } from '@nrwl/devkit'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import type { DependentBuildableProjectNode } from '@nrwl/workspace/src/utilities/buildable-libs-utils'; import { calculateProjectDependencies, @@ -50,9 +50,8 @@ export function createLibraryExecutor( options: BuildAngularLibraryExecutorOptions, context: ExecutorContext ) { - const projGraph = await createProjectGraphAsync(); const { target, dependencies } = calculateProjectDependencies( - projGraph, + readCachedProjectGraph(), context.root, context.projectName, context.targetName, diff --git a/packages/next/src/executors/build/build.impl.ts b/packages/next/src/executors/build/build.impl.ts index bd56e66de5109..1bd30b5a58b31 100644 --- a/packages/next/src/executors/build/build.impl.ts +++ b/packages/next/src/executors/build/build.impl.ts @@ -11,7 +11,7 @@ import { NextBuildBuilderOptions } from '../../utils/types'; import { createPackageJson } from './lib/create-package-json'; import { createNextConfigFile } from './lib/create-next-config-file'; import { directoryExists } from '@nrwl/workspace/src/utilities/fileutils'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { calculateProjectDependencies, DependentBuildableProjectNode, @@ -32,9 +32,8 @@ export default async function buildExecutor( const root = resolve(context.root, options.root); if (!options.buildLibsFromSource && context.targetName) { - const projGraph = await createProjectGraphAsync(); const result = calculateProjectDependencies( - projGraph, + readCachedProjectGraph(), context.root, context.projectName, context.targetName, diff --git a/packages/next/src/executors/build/lib/create-package-json.ts b/packages/next/src/executors/build/lib/create-package-json.ts index 103527cc10b40..89f512fc055e4 100644 --- a/packages/next/src/executors/build/lib/create-package-json.ts +++ b/packages/next/src/executors/build/lib/create-package-json.ts @@ -1,6 +1,6 @@ import { ExecutorContext } from '@nrwl/devkit'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { writeJsonFile } from '@nrwl/workspace/src/utilities/fileutils'; import { createPackageJson as generatePackageJson } from '@nrwl/workspace/src/utilities/create-package-json'; @@ -10,7 +10,7 @@ export async function createPackageJson( options: NextBuildBuilderOptions, context: ExecutorContext ) { - const depGraph = await createProjectGraphAsync(); + const depGraph = readCachedProjectGraph(); const packageJson = generatePackageJson(context.projectName, depGraph, { root: context.root, projectRoot: context.workspace.projects[context.projectName].sourceRoot, diff --git a/packages/next/src/executors/export/export.impl.ts b/packages/next/src/executors/export/export.impl.ts index af9bc6b0c0c6a..2b57d76bd7c75 100644 --- a/packages/next/src/executors/export/export.impl.ts +++ b/packages/next/src/executors/export/export.impl.ts @@ -12,7 +12,7 @@ import { NextBuildBuilderOptions, NextExportBuilderOptions, } from '../../utils/types'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { calculateProjectDependencies, DependentBuildableProjectNode, @@ -29,9 +29,8 @@ export default async function exportExecutor( ) { let dependencies: DependentBuildableProjectNode[] = []; if (!options.buildLibsFromSource) { - const projGraph = await createProjectGraphAsync(); const result = calculateProjectDependencies( - projGraph, + readCachedProjectGraph(), context.root, context.projectName, 'build', // this should be generalized diff --git a/packages/next/src/executors/server/server.impl.ts b/packages/next/src/executors/server/server.impl.ts index a67b8202c5011..7a95e009fff4c 100644 --- a/packages/next/src/executors/server/server.impl.ts +++ b/packages/next/src/executors/server/server.impl.ts @@ -23,7 +23,7 @@ import { } from '../../utils/types'; import { customServer } from './lib/custom-server'; import { defaultServer } from './lib/default-server'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { calculateProjectDependencies, DependentBuildableProjectNode, @@ -56,9 +56,8 @@ export default async function* serveExecutor( const root = resolve(context.root, buildOptions.root); if (!options.buildLibsFromSource) { - const projGraph = await createProjectGraphAsync(); const result = calculateProjectDependencies( - projGraph, + readCachedProjectGraph(), context.root, context.projectName, 'build', // should be generalized diff --git a/packages/node/src/executors/build/build.impl.spec.ts b/packages/node/src/executors/build/build.impl.spec.ts index d13bd0eec6ba1..4cb9b9b26e97e 100644 --- a/packages/node/src/executors/build/build.impl.spec.ts +++ b/packages/node/src/executors/build/build.impl.spec.ts @@ -17,8 +17,8 @@ describe('Node Build Executor', () => { beforeEach(async () => { jest - .spyOn(projectGraph, 'createProjectGraphAsync') - .mockReturnValue(Promise.resolve({} as ProjectGraph)); + .spyOn(projectGraph, 'readCachedProjectGraph') + .mockReturnValue({} as ProjectGraph); (runWebpack).mockReturnValue(of({ hasErrors: () => false })); context = { diff --git a/packages/node/src/executors/build/build.impl.ts b/packages/node/src/executors/build/build.impl.ts index 090e0b25ae71b..b575d13d65e65 100644 --- a/packages/node/src/executors/build/build.impl.ts +++ b/packages/node/src/executors/build/build.impl.ts @@ -1,6 +1,6 @@ import { ExecutorContext } from '@nrwl/devkit'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { calculateProjectDependencies, checkDependentProjectsHaveBeenBuilt, @@ -48,7 +48,7 @@ export async function* buildExecutor( sourceRoot, root ); - const projGraph = await createProjectGraphAsync(); + const projGraph = readCachedProjectGraph(); if (!options.buildLibsFromSource) { const { target, dependencies } = calculateProjectDependencies( projGraph, diff --git a/packages/node/src/executors/package/package.impl.spec.ts b/packages/node/src/executors/package/package.impl.spec.ts index d2461757645d6..fd50fd5f60cb6 100644 --- a/packages/node/src/executors/package/package.impl.spec.ts +++ b/packages/node/src/executors/package/package.impl.spec.ts @@ -89,8 +89,8 @@ describe('NodePackageBuilder', () => { describe('Without library dependencies', () => { beforeEach(() => { jest - .spyOn(projectGraph, 'createProjectGraphAsync') - .mockImplementation(async () => { + .spyOn(projectGraph, 'readCachedProjectGraph') + .mockImplementation(() => { return { nodes: { nodelib: { @@ -263,8 +263,8 @@ describe('NodePackageBuilder', () => { beforeEach(() => { // fake that dep project has been built jest - .spyOn(projectGraph, 'createProjectGraphAsync') - .mockImplementation(async () => { + .spyOn(projectGraph, 'readCachedProjectGraph') + .mockImplementation(() => { return { nodes: { nodelib: { diff --git a/packages/node/src/executors/package/package.impl.ts b/packages/node/src/executors/package/package.impl.ts index 35c56dff5e990..2ad7124dbfdab 100644 --- a/packages/node/src/executors/package/package.impl.ts +++ b/packages/node/src/executors/package/package.impl.ts @@ -1,5 +1,5 @@ import { ExecutorContext } from '@nrwl/devkit'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { copyAssetFiles } from '@nrwl/workspace/src/utilities/assets'; import { calculateProjectDependencies, @@ -16,11 +16,10 @@ export async function packageExecutor( options: NodePackageBuilderOptions, context: ExecutorContext ) { - const projGraph = await createProjectGraphAsync(); const libRoot = context.workspace.projects[context.projectName].root; const normalizedOptions = normalizeOptions(options, context, libRoot); const { target, dependencies } = calculateProjectDependencies( - projGraph, + readCachedProjectGraph(), context.root, context.projectName, context.targetName, diff --git a/packages/web/src/executors/build/build.impl.ts b/packages/web/src/executors/build/build.impl.ts index 99359fad870dc..0b4f559888eb1 100644 --- a/packages/web/src/executors/build/build.impl.ts +++ b/packages/web/src/executors/build/build.impl.ts @@ -7,7 +7,7 @@ import { execSync } from 'child_process'; import { Range, satisfies } from 'semver'; import { basename, join } from 'path'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { calculateProjectDependencies, checkDependentProjectsHaveBeenBuilt, @@ -137,9 +137,8 @@ export async function* run( const metadata = context.workspace.projects[context.projectName]; if (!options.buildLibsFromSource && context.targetName) { - const projGraph = await createProjectGraphAsync(); const { dependencies } = calculateProjectDependencies( - projGraph, + readCachedProjectGraph(), context.root, context.projectName, context.targetName, diff --git a/packages/web/src/executors/dev-server/dev-server.impl.ts b/packages/web/src/executors/dev-server/dev-server.impl.ts index 6ced4cd2b7eb0..d96851f3360de 100644 --- a/packages/web/src/executors/dev-server/dev-server.impl.ts +++ b/packages/web/src/executors/dev-server/dev-server.impl.ts @@ -20,7 +20,7 @@ import { calculateProjectDependencies, createTmpTsConfig, } from '@nrwl/workspace/src/utilities/buildable-libs-utils'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; export interface WebDevServerOptions { host: string; @@ -67,9 +67,8 @@ export default async function* devServerExecutor( } if (!buildOptions.buildLibsFromSource) { - const projGraph = await createProjectGraphAsync(); const { target, dependencies } = calculateProjectDependencies( - projGraph, + readCachedProjectGraph(), context.root, context.projectName, 'build', // should be generalized diff --git a/packages/web/src/executors/package/package.impl.ts b/packages/web/src/executors/package/package.impl.ts index 5f69fba5bd692..253c9738e0f91 100644 --- a/packages/web/src/executors/package/package.impl.ts +++ b/packages/web/src/executors/package/package.impl.ts @@ -22,7 +22,7 @@ import { catchError, concatMap, last, tap } from 'rxjs/operators'; import { eachValueFrom } from 'rxjs-for-await'; import * as autoprefixer from 'autoprefixer'; -import { createProjectGraphAsync } from '@nrwl/workspace/src/core/project-graph'; +import { readCachedProjectGraph } from '@nrwl/workspace/src/core/project-graph'; import { calculateProjectDependencies, checkDependentProjectsHaveBeenBuilt, @@ -58,9 +58,8 @@ export default async function* run( ) { const project = context.workspace.projects[context.projectName]; const sourceRoot = project.sourceRoot; - const projGraph = await createProjectGraphAsync(); const { target, dependencies } = calculateProjectDependencies( - projGraph, + readCachedProjectGraph(), context.root, context.projectName, context.targetName,