UNPKG

@nx/angular

Version:

The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It provides: - Integration with libraries such as Storybook, Jest, ESLint, Tailwind CSS, Playwright and Cypre

76 lines (75 loc) 3.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateSsrSetup = updateSsrSetup; const devkit_1 = require("@nx/devkit"); const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup"); const path_1 = require("path"); const versions_1 = require("../../../utils/versions"); const artifact_types_1 = require("../../utils/artifact-types"); const version_utils_1 = require("../../utils/version-utils"); async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfiguration, skipPackageJson, }) { const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree); let project = (0, devkit_1.readProjectConfiguration)(tree, appName); const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree); tree.rename((0, devkit_1.joinPathFragments)(sourceRoot, 'main.server.ts'), (0, devkit_1.joinPathFragments)(sourceRoot, 'bootstrap.server.ts')); const pathToServerEntry = (0, devkit_1.joinPathFragments)(angularMajorVersion >= 19 ? sourceRoot : project.root, 'server.ts'); tree.write(pathToServerEntry, `import('./${angularMajorVersion >= 19 ? '' : 'src/'}main.server');`); const browserBundleOutput = project.targets.build.options.outputPath; const serverBundleOutput = project.targets.build.options.outputPath.replace(/\/browser$/, '/server'); (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, '../files/common'), project.root, { appName, browserBundleOutput, serverBundleOutput, standalone, commonEngineEntryPoint: angularMajorVersion >= 19 ? '@angular/ssr/node' : '@angular/ssr', tmpl: '', }); const pathToTemplateFiles = typescriptConfiguration ? 'base-ts' : 'base'; (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, `../files/${pathToTemplateFiles}`), project.root, { tmpl: '', }); if (standalone) { const componentType = (0, artifact_types_1.getComponentType)(tree); const componentFileSuffix = componentType ? `.${componentType}` : ''; (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '../files/standalone'), project.root, { appName, standalone, componentType: componentType ? (0, devkit_1.names)(componentType).className : '', componentFileSuffix, tmpl: '', }); } // update project.json project = (0, devkit_1.readProjectConfiguration)(tree, appName); project.targets.server.executor = '@nx/angular:webpack-server'; project.targets.server.options.customWebpackConfig = { path: (0, devkit_1.joinPathFragments)(project.root, `webpack.server.config.${typescriptConfiguration ? 'ts' : 'js'}`), }; if (project.targets.server.configurations && project.targets.server.configurations.development) { if ('vendorChunk' in project.targets.server.configurations.development) { delete project.targets.server.configurations.development.vendorChunk; } } project.targets['serve-ssr'].options = { ...(project.targets['serve-ssr'].options ?? {}), port, }; project.targets['static-server'] = { dependsOn: ['build', 'server'], executor: 'nx:run-commands', options: { command: `PORT=${port} node ${(0, devkit_1.joinPathFragments)(project.targets.server.options.outputPath, 'main.js')}`, }, }; (0, devkit_1.updateProjectConfiguration)(tree, appName, project); if (!skipPackageJson) { return (0, devkit_1.addDependenciesToPackageJson)(tree, { cors: versions_1.corsVersion, '@module-federation/node': versions_1.moduleFederationNodeVersion, }, { '@types/cors': versions_1.typesCorsVersion, }); } return () => { }; }