diff --git a/packages/angular/src/generators/setup-ssr/files/ngmodule/base/__serverFileName__ b/packages/angular/src/generators/setup-ssr/files/ngmodule/base/__serverFileName__ index 23c5cc1f58b4d..5373ef943b2b3 100644 --- a/packages/angular/src/generators/setup-ssr/files/ngmodule/base/__serverFileName__ +++ b/packages/angular/src/generators/setup-ssr/files/ngmodule/base/__serverFileName__ @@ -11,7 +11,7 @@ import {<%= rootModuleClassName %>} from './src/<%= main.slice(0, -3) %>'; // The Express app is exported so that it can be used by serverless Functions. export function app(): express.Express { const server = express(); - const distFolder = join(process.cwd(), 'dist/apps/<%= project %>/browser'); + const distFolder = join(process.cwd(), '<%= browserBundleOutputPath %>'); const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index'; // Our Universal express-engine (found @ https://github.com/angular/universal/tree/main/modules/express-engine) @@ -57,4 +57,4 @@ if (moduleFilename === __filename || moduleFilename.includes('iisnode')) { run(); } -export * from './src/<%= main.slice(0, -3) %>'; \ No newline at end of file +export * from './src/<%= main.slice(0, -3) %>'; diff --git a/packages/angular/src/generators/setup-ssr/files/standalone/__serverFileName__ b/packages/angular/src/generators/setup-ssr/files/standalone/__serverFileName__ index df1c71ff63f8c..c57814dc6c128 100644 --- a/packages/angular/src/generators/setup-ssr/files/standalone/__serverFileName__ +++ b/packages/angular/src/generators/setup-ssr/files/standalone/__serverFileName__ @@ -11,7 +11,7 @@ import bootstrap from './src/<%= main.slice(0, -3) %>'; // The Express app is exported so that it can be used by serverless Functions. export function app(): express.Express { const server = express(); - const distFolder = join(process.cwd(), 'dist/apps/<%= project %>/browser'); + const distFolder = join(process.cwd(), '<%= browserBundleOutputPath %>'); const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index'; // Our Universal express-engine (found @ https://github.com/angular/universal/tree/main/modules/express-engine) diff --git a/packages/angular/src/generators/setup-ssr/lib/generate-files.ts b/packages/angular/src/generators/setup-ssr/lib/generate-files.ts index 33f0492c0233e..f604094a89859 100644 --- a/packages/angular/src/generators/setup-ssr/lib/generate-files.ts +++ b/packages/angular/src/generators/setup-ssr/lib/generate-files.ts @@ -9,7 +9,10 @@ import { getInstalledAngularVersionInfo } from '../../utils/version-utils'; import type { Schema } from '../schema'; export function generateSSRFiles(tree: Tree, schema: Schema) { - const projectRoot = readProjectConfiguration(tree, schema.project).root; + const projectConfig = readProjectConfiguration(tree, schema.project); + const projectRoot = projectConfig.root; + const browserBundleOutputPath = + projectConfig.targets.build.options.outputPath; const pathToFiles = joinPathFragments(__dirname, '..', 'files'); @@ -23,14 +26,16 @@ export function generateSSRFiles(tree: Tree, schema: Schema) { tree, joinPathFragments(pathToFiles, 'standalone'), projectRoot, - { ...schema, tpl: '' } + + { ...schema, browserBundleOutputPath, tpl: '' } ); } else { generateFiles( tree, joinPathFragments(pathToFiles, 'ngmodule', 'base'), projectRoot, - { ...schema, tpl: '' } + + { ...schema, browserBundleOutputPath, tpl: '' } ); const { major: angularMajorVersion, version: angularVersion } = @@ -41,7 +46,8 @@ export function generateSSRFiles(tree: Tree, schema: Schema) { tree, joinPathFragments(pathToFiles, 'ngmodule', 'v14'), projectRoot, - { ...schema, tpl: '' } + + { ...schema, browserBundleOutputPath, tpl: '' } ); } if (lt(angularVersion, '15.2.0')) { @@ -49,7 +55,8 @@ export function generateSSRFiles(tree: Tree, schema: Schema) { tree, joinPathFragments(pathToFiles, 'ngmodule', 'pre-v15-2'), projectRoot, - { ...schema, tpl: '' } + + { ...schema, browserBundleOutputPath, tpl: '' } ); } } diff --git a/packages/angular/src/generators/setup-ssr/lib/update-project-config.ts b/packages/angular/src/generators/setup-ssr/lib/update-project-config.ts index 84c263df2dcff..5d4d2f00d1df5 100644 --- a/packages/angular/src/generators/setup-ssr/lib/update-project-config.ts +++ b/packages/angular/src/generators/setup-ssr/lib/update-project-config.ts @@ -15,8 +15,8 @@ import type { Schema } from '../schema'; export function updateProjectConfig(tree: Tree, schema: Schema) { let projectConfig = readProjectConfiguration(tree, schema.project); const buildTarget = projectConfig.targets.build; - - buildTarget.options.outputPath = `dist/apps/${schema.project}/browser`; + const baseOutputPath = buildTarget.options.outputPath; + buildTarget.options.outputPath = joinPathFragments(baseOutputPath, 'browser'); const buildConfigurations = projectConfig.targets.build.configurations; const configurations: Record = {}; @@ -30,7 +30,7 @@ export function updateProjectConfig(tree: Tree, schema: Schema) { dependsOn: ['build'], executor: '@angular-devkit/build-angular:server', options: { - outputPath: `dist/${projectConfig.root}/server`, + outputPath: joinPathFragments(baseOutputPath, 'server'), main: joinPathFragments(projectConfig.root, schema.serverFileName), tsConfig: joinPathFragments(projectConfig.root, 'tsconfig.server.json'), ...(buildTarget.options ? getServerOptions(buildTarget.options) : {}), diff --git a/packages/angular/src/generators/setup-ssr/setup-ssr.ts b/packages/angular/src/generators/setup-ssr/setup-ssr.ts index 6e8eecef3300a..49e7242f22f62 100644 --- a/packages/angular/src/generators/setup-ssr/setup-ssr.ts +++ b/packages/angular/src/generators/setup-ssr/setup-ssr.ts @@ -18,14 +18,13 @@ export async function setupSsr(tree: Tree, schema: Schema) { validateOptions(tree, schema); const options = normalizeOptions(tree, schema); + updateProjectConfig(tree, options); generateSSRFiles(tree, options); if (!options.standalone) { updateAppModule(tree, options); } - updateProjectConfig(tree, options); - const pkgVersions = versions(tree); addDependenciesToPackageJson(