function updateWorkspaceRule()

in modules/common/schematics/ng-add/index.ts [138:177]


function updateWorkspaceRule(options: NgAddOptions): Rule {
  return updateWorkspace((workspace) => {
    const project = workspace.projects.get(options.project);
    if (options.ssr) {
      project.targets.add({
        name: 'server',
        builder: '@angular-devkit/build-angular:server',
        options: {
          outputPath: `dist/${options.project}/server`,
          main: posix.join(project.sourceRoot ?? '', 'server.ts'),
          tsConfig: posix.join(project.root, 'tsconfig.server.json'),
          bundleDependencies: false,
          optimization: false,
        },
      });

      const buildTarget = project.targets.get('build');
      if (project.targets.get('build')?.options) {
        buildTarget.options.outputPath = `dist/${options.project}/browser`;
      }
    }

    if (options.prerender) {
      project.targets.add({
        name: 'prerender',
        builder: '@nguniversal/builders:static-generator',
        defaultConfiguration: 'production',
        options: {},
        configurations: {
          production: {
            browserTarget: `${options.project}:build:production`,
          },
          development: {
            browserTarget: `${options.project}:build:development`,
          },
        },
      });
    }
  });
}