Skip to content

Commit

Permalink
fix(@schematics/angular): check both application builder packages in …
Browse files Browse the repository at this point in the history
…SSR schematic

The SSR schematic was previously only checking for the application build found
within the `@angular-devkit/build-angular` package which is only an alias to the
actual builder found in the `@angular/build` package. Both aliased and direct
usages are now checked when executing the schematic.

(cherry picked from commit 3107ad7)
  • Loading branch information
clydin authored and alan-agius4 committed May 27, 2024
1 parent 3528798 commit 9967c04
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
17 changes: 12 additions & 5 deletions packages/schematics/angular/ssr/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import { latestVersions } from '../utility/latest-versions';
import { isStandaloneApp } from '../utility/ng-ast-utils';
import { targetBuildNotFoundError } from '../utility/project-targets';
import { getMainFilePath } from '../utility/standalone/util';
import { getWorkspace } from '../utility/workspace';
import { ProjectDefinition, getWorkspace } from '../utility/workspace';
import { Builders } from '../utility/workspace-models';

import { Schema as SSROptions } from './schema';
Expand Down Expand Up @@ -332,8 +332,7 @@ function addServerFile(options: ServerOptions, isStandalone: boolean): Rule {
if (!project) {
throw new SchematicsException(`Invalid project name (${projectName})`);
}
const isUsingApplicationBuilder =
project?.targets?.get('build')?.builder === Builders.Application;
const isUsingApplicationBuilder = usingApplicationBuilder(project);

const browserDistDirectory = isUsingApplicationBuilder
? (await getApplicationBuilderOutputPaths(host, projectName)).browser
Expand Down Expand Up @@ -366,8 +365,8 @@ export default function (options: SSROptions): Rule {
if (!clientProject) {
throw targetBuildNotFoundError();
}
const isUsingApplicationBuilder =
clientProject.targets.get('build')?.builder === Builders.Application;

const isUsingApplicationBuilder = usingApplicationBuilder(clientProject);

return chain([
schematic('server', {
Expand All @@ -389,3 +388,11 @@ export default function (options: SSROptions): Rule {
]);
};
}

function usingApplicationBuilder(project: ProjectDefinition) {
const buildBuilder = project.targets.get('build')?.builder;
const isUsingApplicationBuilder =
buildBuilder === Builders.Application || buildBuilder === Builders.BuildApplication;

return isUsingApplicationBuilder;
}
5 changes: 4 additions & 1 deletion packages/schematics/angular/utility/standalone/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,10 @@ export async function getMainFilePath(tree: Tree, projectName: string): Promise<

const options = buildTarget.options as Record<string, string>;

return buildTarget.builder === Builders.Application ? options.browser : options.main;
return buildTarget.builder === Builders.Application ||
buildTarget.builder === Builders.BuildApplication
? options.browser
: options.main;
}

/**
Expand Down
1 change: 1 addition & 0 deletions packages/schematics/angular/utility/workspace-models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ export enum Builders {
DevServer = '@angular-devkit/build-angular:dev-server',
ExtractI18n = '@angular-devkit/build-angular:extract-i18n',
Protractor = '@angular-devkit/build-angular:protractor',
BuildApplication = '@angular/build:application',
}

export interface FileReplacements {
Expand Down

0 comments on commit 9967c04

Please sign in to comment.