diff --git a/packages/angular/src/generators/application/application.ts b/packages/angular/src/generators/application/application.ts index ce318a46cb..cf1f02eeae 100644 --- a/packages/angular/src/generators/application/application.ts +++ b/packages/angular/src/generators/application/application.ts @@ -16,6 +16,7 @@ import { addE2e, addLinting, addProxyConfig, + addServeStaticTarget, addUnitTestRunner, createFiles, createProject, @@ -74,7 +75,12 @@ export async function applicationGeneratorInternal( await addLinting(tree, options); await addUnitTestRunner(tree, options); - await addE2e(tree, options); + const e2ePort = await addE2e(tree, options); + addServeStaticTarget( + tree, + options, + options.e2eTestRunner !== 'none' ? e2ePort : options.port + ); updateEditorTsConfig(tree, options); setGeneratorDefaults(tree, options); diff --git a/packages/angular/src/generators/application/lib/add-e2e.ts b/packages/angular/src/generators/application/lib/add-e2e.ts index 717ea77986..04359159d7 100644 --- a/packages/angular/src/generators/application/lib/add-e2e.ts +++ b/packages/angular/src/generators/application/lib/add-e2e.ts @@ -27,8 +27,6 @@ export async function addE2e(tree: Tree, options: NormalizedSchema) { options.name, options.port ); - // TODO: This can call `@nx/web:static-config` generator when ready - addFileServerTarget(tree, options, 'serve-static', e2eWebServerInfo.e2ePort); if (options.e2eTestRunner === 'cypress') { const { configurationGenerator } = ensurePackage< @@ -101,35 +99,8 @@ export async function addE2e(tree: Tree, options: NormalizedSchema) { ); } } -} -function addFileServerTarget( - tree: Tree, - options: NormalizedSchema, - targetName: string, - e2ePort: number -) { - if (!options.skipPackageJson) { - addDependenciesToPackageJson(tree, {}, { '@nx/web': nxVersion }); - } - - const { major: angularMajorVersion } = getInstalledAngularVersionInfo(tree); - const isUsingApplicationBuilder = - angularMajorVersion >= 17 && options.bundler === 'esbuild'; - - const projectConfig = readProjectConfiguration(tree, options.name); - projectConfig.targets[targetName] = { - executor: '@nx/web:file-server', - options: { - buildTarget: `${options.name}:build`, - port: e2ePort, - staticFilePath: isUsingApplicationBuilder - ? joinPathFragments(options.outputPath, 'browser') - : undefined, - spa: true, - }, - }; - updateProjectConfiguration(tree, options.name, projectConfig); + return e2eWebServerInfo.e2ePort; } function getAngularE2EWebServerInfo( diff --git a/packages/angular/src/generators/application/lib/add-serve-static-target.ts b/packages/angular/src/generators/application/lib/add-serve-static-target.ts new file mode 100644 index 0000000000..74e67d7d17 --- /dev/null +++ b/packages/angular/src/generators/application/lib/add-serve-static-target.ts @@ -0,0 +1,47 @@ +import { Tree } from '@nx/devkit'; +import type { NormalizedSchema } from './normalized-schema'; +import { + addDependenciesToPackageJson, + joinPathFragments, + readProjectConfiguration, + updateProjectConfiguration, +} from '@nx/devkit'; +import { nxVersion } from '../../../utils/versions'; +import { getInstalledAngularVersionInfo } from '../../utils/version-utils'; + +export function addServeStaticTarget( + tree: Tree, + options: NormalizedSchema, + port: number +) { + addFileServerTarget(tree, options, 'serve-static', port); +} + +function addFileServerTarget( + tree: Tree, + options: NormalizedSchema, + targetName: string, + e2ePort: number +) { + if (!options.skipPackageJson) { + addDependenciesToPackageJson(tree, {}, { '@nx/web': nxVersion }); + } + + const { major: angularMajorVersion } = getInstalledAngularVersionInfo(tree); + const isUsingApplicationBuilder = + angularMajorVersion >= 17 && options.bundler === 'esbuild'; + + const projectConfig = readProjectConfiguration(tree, options.name); + projectConfig.targets[targetName] = { + executor: '@nx/web:file-server', + options: { + buildTarget: `${options.name}:build`, + port: e2ePort, + staticFilePath: isUsingApplicationBuilder + ? joinPathFragments(options.outputPath, 'browser') + : undefined, + spa: true, + }, + }; + updateProjectConfiguration(tree, options.name, projectConfig); +} diff --git a/packages/angular/src/generators/application/lib/index.ts b/packages/angular/src/generators/application/lib/index.ts index 0c86551d32..9aca0ca441 100644 --- a/packages/angular/src/generators/application/lib/index.ts +++ b/packages/angular/src/generators/application/lib/index.ts @@ -10,3 +10,4 @@ export * from './normalized-schema'; export * from './set-app-strict-default'; export * from './set-generator-defaults'; export * from './update-editor-tsconfig'; +export * from './add-serve-static-target';