diff --git a/packages/angular/build/src/builders/application/tests/behavior/chunk-optimization-server_spec.ts b/packages/angular/build/src/builders/application/tests/behavior/chunk-optimization-server_spec.ts index 76ecbbc4329e..18b92e7690a0 100644 --- a/packages/angular/build/src/builders/application/tests/behavior/chunk-optimization-server_spec.ts +++ b/packages/angular/build/src/builders/application/tests/behavior/chunk-optimization-server_spec.ts @@ -151,15 +151,19 @@ describeBuilder(buildApplication, APPLICATION_BUILDER_INFO, (harness) => { .not.toBeNull(); const mapping = JSON.parse(mappingSource![1]) as Record; + const mainServerContent = harness.readFile('dist/server/main.server.mjs'); - // Every lazy route entry point must retain a mapping entry after optimization. + // Every lazy route entry point must retain a mapping entry after optimization + // that matches the ɵentryName emitted into the server bundle. for (const name of LAZY_ROUTE_NAMES) { - const key = Object.keys(mapping).find((entryPoint) => - entryPoint.endsWith(`${name}.component.ts`), - ); - expect(key) - .withContext(`mapping entry for lazy route '${name}' should exist`) + const expectedEntryPoint = `src/app/${name}.component.ts`; + expect(mapping[expectedEntryPoint]) + .withContext(`mapping entry for '${expectedEntryPoint}' should exist`) .toBeDefined(); + + expect(mainServerContent) + .withContext(`main.server.mjs should contain ɵentryName '${expectedEntryPoint}'`) + .toContain(expectedEntryPoint); } // Every browser file referenced by the mapping must exist on disk. diff --git a/packages/angular/build/src/tools/angular/compilation/angular-compilation_spec.ts b/packages/angular/build/src/tools/angular/compilation/angular-compilation_spec.ts index 3c09b87f69d7..58c492ac5214 100644 --- a/packages/angular/build/src/tools/angular/compilation/angular-compilation_spec.ts +++ b/packages/angular/build/src/tools/angular/compilation/angular-compilation_spec.ts @@ -451,7 +451,11 @@ describe('AngularCompilation', () => { it('applies override options correctly', () => { const { compilerOptions } = transformCompilerOptions( ts, - { target: ts.ScriptTarget.ES2022, isolatedModules: true }, + { + target: ts.ScriptTarget.ES2022, + isolatedModules: true, + basePath: '/workspace/projects/app', + }, { sourcemap: true, preserveSymlinks: true, @@ -459,9 +463,11 @@ describe('AngularCompilation', () => { enableHmr: true, instrumentForCoverage: true, includeTestMetadata: true, + basePath: '/workspace', }, ); + expect(compilerOptions.basePath).toBe('/workspace'); expect(compilerOptions.inlineSources).toBe(true); expect(compilerOptions.inlineSourceMap).toBe(true); expect(compilerOptions.preserveSymlinks).toBe(true); diff --git a/packages/angular/build/src/tools/angular/compilation/compiler-options.ts b/packages/angular/build/src/tools/angular/compilation/compiler-options.ts index b2c83d616f08..3ee171021787 100644 --- a/packages/angular/build/src/tools/angular/compilation/compiler-options.ts +++ b/packages/angular/build/src/tools/angular/compilation/compiler-options.ts @@ -9,6 +9,7 @@ import type * as ng from '@angular/compiler-cli'; import type { PartialMessage } from 'esbuild'; import * as path from 'node:path'; +import { join } from 'node:path'; import type ts from 'typescript'; export interface CompilerOptionOverrides { @@ -24,6 +25,7 @@ export interface CompilerOptionOverrides { declarationMap?: boolean; compilationMode?: 'full' | 'partial'; paths?: Record; + basePath?: string; } export function transformCompilerOptions( @@ -134,6 +136,7 @@ export function transformCompilerOptions( return { compilerOptions: { ...compilerOptions, + basePath: overrides?.basePath ?? compilerOptions.basePath, noEmitOnError: false, composite: false, inlineSources: !!overrides?.sourcemap, diff --git a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts index 9a36eea56d61..cd53d6085e65 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -331,6 +331,7 @@ export function createCompilerPlugin( includeTestMetadata: !!pluginOptions.includeTestMetadata, customConditions: build.initialOptions.conditions, rootFiles: pluginOptions.rootFiles, + basePath: build.initialOptions.absWorkingDir, }, );