@nx/angular 20.2.0-canary.20241130-ec5a5e6 → 20.2.0-canary.20241204-75b2080
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/executors.json +1 -1
- package/fesm2022/nx-angular-mf.mjs.map +1 -1
- package/fesm2022/nx-angular-testing.mjs.map +1 -1
- package/fesm2022/nx-angular.mjs.map +1 -1
- package/generators.json +1 -1
- package/migrations.json +160 -1
- package/package.json +12 -19
- package/src/builders/dev-server/lib/normalize-options.js +3 -0
- package/src/builders/dev-server/lib/validate-options.js +1 -9
- package/src/builders/dev-server/schema.json +3 -4
- package/src/executors/application/application.impl.d.ts +1 -1
- package/src/executors/application/application.impl.js +4 -1
- package/src/executors/application/schema.json +78 -6
- package/src/executors/application/utils/normalize-options.d.ts +2 -0
- package/src/executors/application/utils/normalize-options.js +33 -0
- package/src/executors/application/utils/validate-options.js +18 -4
- package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +1 -1
- package/src/executors/browser-esbuild/browser-esbuild.impl.js +0 -9
- package/src/executors/browser-esbuild/schema.json +1 -1
- package/src/executors/delegate-build/delegate-build.impl.d.ts +1 -1
- package/src/executors/module-federation-dev-server/lib/index.d.ts +0 -2
- package/src/executors/module-federation-dev-server/lib/index.js +0 -2
- package/src/executors/module-federation-dev-server/lib/normalize-options.js +1 -0
- package/src/executors/module-federation-dev-server/lib/start-dev-remotes.d.ts +1 -1
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +1 -1
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +2 -26
- package/src/executors/module-federation-dev-server/schema.d.ts +1 -0
- package/src/executors/module-federation-ssr-dev-server/lib/normalize-options.d.ts +2 -2
- package/src/executors/module-federation-ssr-dev-server/lib/normalize-options.js +1 -0
- package/src/executors/module-federation-ssr-dev-server/lib/start-dev-remotes.d.ts +1 -1
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts +1 -1
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +7 -33
- package/src/executors/module-federation-ssr-dev-server/schema.d.ts +8 -14
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.d.ts +1 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +11 -20
- package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.d.ts +1 -1
- package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +1 -1
- package/src/executors/ng-packagr-lite/schema.json +0 -8
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.d.ts +1 -2
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +4 -21
- package/src/executors/package/package.impl.d.ts +2 -2
- package/src/executors/package/package.impl.js +1 -1
- package/src/executors/package/schema.d.ts +1 -3
- package/src/executors/package/schema.json +0 -10
- package/src/executors/utilities/ng-packagr/{stylesheet-processor.js → pre-v19/stylesheet-processor.js} +2 -2
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +11 -5
- package/src/executors/utilities/ng-packagr/tailwindcss.d.ts +0 -6
- package/src/executors/utilities/ng-packagr/tailwindcss.js +0 -32
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts +23 -0
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.js +93 -0
- package/src/generators/application/application.js +1 -0
- package/src/generators/application/files/ng-module/src/app/app.component.ts__tpl__ +4 -5
- package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/nx-welcome.component.ts__tpl__ +2 -1
- package/src/generators/application/files/nx-welcome/claimed/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
- package/src/generators/application/files/nx-welcome/not-configured/ng-module/src/app/nx-welcome.component.ts__tpl__ +2 -1
- package/src/generators/application/files/nx-welcome/not-configured/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
- package/src/generators/application/files/nx-welcome/unclaimed/ng-module/src/app/nx-welcome.component.ts__tpl__ +2 -1
- package/src/generators/application/files/nx-welcome/unclaimed/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
- package/src/generators/application/files/standalone-components/src/app/app.component.ts__tpl__ +4 -6
- package/src/generators/application/lib/add-serve-static-target.d.ts +1 -1
- package/src/generators/application/lib/add-serve-static-target.js +1 -3
- package/src/generators/application/lib/create-files.js +4 -1
- package/src/generators/application/lib/create-project.js +24 -31
- package/src/generators/application/lib/normalize-options.js +1 -6
- package/src/generators/application/schema.d.ts +1 -0
- package/src/generators/application/schema.json +7 -2
- package/src/generators/component/component.js +4 -0
- package/src/generators/component/files/__fileName__.spec.ts__tpl__ +1 -1
- package/src/generators/component/files/__fileName__.ts__tpl__ +5 -13
- package/src/generators/component/lib/normalize-options.js +2 -0
- package/src/generators/component/schema.d.ts +1 -0
- package/src/generators/component/schema.json +5 -0
- package/src/generators/convert-to-application-executor/convert-to-application-executor.js +1 -4
- package/src/generators/convert-to-application-executor/schema.json +1 -1
- package/src/generators/directive/directive.js +5 -0
- package/src/generators/directive/files/__fileName__.ts__tpl__ +2 -2
- package/src/generators/directive/lib/normalize-options.js +3 -1
- package/src/generators/host/files/common/{v17+/src → src}/main.server.ts__tmpl__ +1 -1
- package/src/generators/host/lib/update-ssr-setup.js +2 -1
- package/src/generators/host/schema.d.ts +1 -0
- package/src/generators/host/schema.json +4 -0
- package/src/generators/pipe/files/__fileName__.ts__tpl__ +2 -2
- package/src/generators/pipe/lib/normalize-options.js +3 -1
- package/src/generators/pipe/pipe.js +5 -0
- package/src/generators/remote/files/common/{v17+/src → src}/main.server.ts__tmpl__ +1 -1
- package/src/generators/remote/lib/update-ssr-setup.js +2 -1
- package/src/generators/remote/schema.d.ts +1 -0
- package/src/generators/remote/schema.json +4 -0
- package/src/generators/scam/lib/normalize-options.js +3 -1
- package/src/generators/scam-directive/lib/normalize-options.js +3 -1
- package/src/generators/scam-pipe/lib/normalize-options.js +3 -1
- package/src/generators/scam-to-standalone/lib/convert-scam-to-standalone.d.ts +1 -1
- package/src/generators/scam-to-standalone/lib/convert-scam-to-standalone.js +5 -4
- package/src/generators/setup-mf/files/entry-module-files/entry.component.ts__tmpl__ +2 -1
- package/src/generators/setup-mf/files/standalone-entry-component-files/entry.component.ts__tmpl__ +2 -2
- package/src/generators/setup-mf/lib/add-remote-entry.js +5 -0
- package/src/generators/setup-ssr/files/{server → pre-v19/server}/application-builder/__serverFileName__ +1 -1
- package/src/generators/setup-ssr/files/{server/server-builder/v17+ → pre-v19/server/server-builder}/__serverFileName__ +1 -1
- package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/__main__ +1 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/app/__rootModuleFileName__ +13 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +8 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/server/__serverFileName__ +66 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/__main__ +7 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/app/app.config.server.ts__tpl__ +14 -0
- package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +8 -0
- package/src/generators/setup-ssr/files/v19+/application-builder-common-engine/server/__serverFileName__ +65 -0
- package/src/generators/setup-ssr/files/v19+/server-builder/ngmodule-src/__main__ +1 -0
- package/src/generators/setup-ssr/files/v19+/server-builder/ngmodule-src/app/__rootModuleFileName__ +14 -0
- package/src/generators/setup-ssr/files/v19+/server-builder/root/tsconfig.server.json.template +16 -0
- package/src/generators/setup-ssr/files/{server/server-builder/pre-v17 → v19+/server-builder/server}/__serverFileName__ +25 -15
- package/src/generators/setup-ssr/files/v19+/server-builder/standalone-src/__main__ +7 -0
- package/src/generators/setup-ssr/files/v19+/server-builder/standalone-src/app/app.config.server.ts.template +11 -0
- package/src/generators/setup-ssr/lib/add-dependencies.js +6 -17
- package/src/generators/setup-ssr/lib/add-hydration.d.ts +2 -2
- package/src/generators/setup-ssr/lib/add-hydration.js +10 -2
- package/src/generators/setup-ssr/lib/add-server-file.d.ts +2 -2
- package/src/generators/setup-ssr/lib/add-server-file.js +24 -10
- package/src/generators/setup-ssr/lib/generate-files.d.ts +2 -2
- package/src/generators/setup-ssr/lib/generate-files.js +20 -8
- package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts +3 -3
- package/src/generators/setup-ssr/lib/generate-server-ts-config.js +24 -3
- package/src/generators/setup-ssr/lib/normalize-options.d.ts +3 -14
- package/src/generators/setup-ssr/lib/normalize-options.js +23 -6
- package/src/generators/setup-ssr/lib/set-router-initial-navigation.d.ts +2 -2
- package/src/generators/setup-ssr/lib/update-project-config.d.ts +3 -3
- package/src/generators/setup-ssr/lib/update-project-config.js +36 -24
- package/src/generators/setup-ssr/lib/validate-options.js +5 -0
- package/src/generators/setup-ssr/schema.d.ts +5 -0
- package/src/generators/setup-ssr/schema.json +6 -8
- package/src/generators/setup-ssr/setup-ssr.js +6 -11
- package/src/generators/setup-tailwind/lib/index.d.ts +1 -1
- package/src/generators/setup-tailwind/lib/index.js +1 -1
- package/src/generators/setup-tailwind/lib/update-application-styles.js +1 -1
- package/src/generators/setup-tailwind/lib/validate-build-target.d.ts +3 -0
- package/src/generators/setup-tailwind/lib/{add-tailwind-config-path-to-project.js → validate-build-target.js} +4 -15
- package/src/generators/setup-tailwind/setup-tailwind.js +4 -1
- package/src/generators/utils/add-jest.js +4 -8
- package/src/generators/utils/storybook-ast/component-info.js +12 -2
- package/src/generators/utils/validations.d.ts +1 -0
- package/src/generators/utils/validations.js +10 -0
- package/src/generators/utils/version-utils.js +2 -2
- package/src/migrations/update-20-2-0/add-localize-polyfill-to-targets.d.ts +3 -0
- package/src/migrations/update-20-2-0/add-localize-polyfill-to-targets.js +48 -0
- package/src/migrations/update-20-2-0/disable-angular-eslint-prefer-standalone.d.ts +2 -0
- package/src/migrations/update-20-2-0/disable-angular-eslint-prefer-standalone.js +55 -0
- package/src/migrations/update-20-2-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-20-2-0/update-angular-cli.js +23 -0
- package/src/migrations/update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point.d.ts +2 -0
- package/src/migrations/update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point.js +55 -0
- package/src/utils/backward-compatible-versions.d.ts +4 -4
- package/src/utils/backward-compatible-versions.js +20 -19
- package/src/utils/nx-devkit/ast-utils.d.ts +10 -1
- package/src/utils/nx-devkit/ast-utils.js +32 -9
- package/src/utils/versions.d.ts +7 -7
- package/src/utils/versions.js +7 -7
- package/esm2022/index.mjs +0 -2
- package/esm2022/mf/index.mjs +0 -2
- package/esm2022/mf/mf.mjs +0 -116
- package/esm2022/mf/nx-angular-mf.mjs +0 -5
- package/esm2022/nx-angular.mjs +0 -5
- package/esm2022/src/runtime/nx/data-persistence.mjs +0 -349
- package/esm2022/testing/index.mjs +0 -2
- package/esm2022/testing/nx-angular-testing.mjs +0 -5
- package/esm2022/testing/src/testing-utils.mjs +0 -38
- package/src/executors/module-federation-dev-server/lib/build-static-remotes.d.ts +0 -4
- package/src/executors/module-federation-dev-server/lib/build-static-remotes.js +0 -65
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.d.ts +0 -9
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +0 -51
- package/src/executors/module-federation-ssr-dev-server/lib/build-static-remotes.d.ts +0 -4
- package/src/executors/module-federation-ssr-dev-server/lib/build-static-remotes.js +0 -65
- package/src/executors/module-federation-ssr-dev-server/lib/start-static-remotes.d.ts +0 -4
- package/src/executors/module-federation-ssr-dev-server/lib/start-static-remotes.js +0 -41
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.di.d.ts +0 -14
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.di.js +0 -27
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.d.ts +0 -12
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.js +0 -53
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.di.d.ts +0 -15
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.di.js +0 -28
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.transform.d.ts +0 -30
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.transform.js +0 -52
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.di.d.ts +0 -12
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.di.js +0 -20
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.d.ts +0 -9
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.js +0 -320
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.d.ts +0 -14
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.js +0 -35
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/package.di.d.ts +0 -14
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/package.di.js +0 -37
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.d.ts +0 -12
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.js +0 -178
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.d.ts +0 -42
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.di.d.ts +0 -10
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.di.js +0 -17
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.js +0 -201
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.di.d.ts +0 -14
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.di.js +0 -26
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.d.ts +0 -12
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +0 -71
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/entry-point.di.d.ts +0 -13
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/entry-point.di.js +0 -32
- package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.d.ts +0 -14
- package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.js +0 -35
- package/src/executors/package/ng-packagr-adjustments/ng-package/package.di.d.ts +0 -14
- package/src/executors/package/ng-packagr-adjustments/ng-package/package.di.js +0 -37
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +0 -13
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +0 -183
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.d.ts +0 -36
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.di.d.ts +0 -10
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.di.js +0 -17
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +0 -194
- package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.d.ts +0 -1
- package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.js +0 -9
- package/src/generators/host/files/common/pre-v17/src/main.server.ts__tmpl__ +0 -66
- package/src/generators/remote/files/common/pre-v17/src/main.server.ts__tmpl__ +0 -72
- package/src/generators/setup-tailwind/lib/add-tailwind-config-path-to-project.d.ts +0 -3
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.transform.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.transform.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.transform.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.transform.js +0 -0
- /package/src/executors/utilities/ng-packagr/{stylesheet-processor.d.ts → pre-v19/stylesheet-processor.d.ts} +0 -0
- /package/src/generators/setup-ssr/files/{ngmodule/src → pre-v19/ngmodule-src}/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{ngmodule/src → pre-v19/ngmodule-src}/app/__rootModuleFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{root → pre-v19/root}/tsconfig.server.json__tpl__ +0 -0
- /package/src/generators/setup-ssr/files/{standalone/src → pre-v19/standalone-src}/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{standalone/src → pre-v19/standalone-src}/app/app.config.server.ts__tpl__ +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
|
|
2
|
+
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
|
|
3
|
+
{
|
|
4
|
+
"extends": "./tsconfig.app.json",
|
|
5
|
+
"compilerOptions": {
|
|
6
|
+
"outDir": "<%= rootOffset %>out-tsc/server",
|
|
7
|
+
"types": [
|
|
8
|
+
"node"<% if (hasLocalizePackage) { %>,
|
|
9
|
+
"@angular/localize"<% } %>
|
|
10
|
+
]
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"src/<%= main %>",
|
|
14
|
+
"src/server.ts"
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import 'zone.js/
|
|
1
|
+
import 'zone.js/node';
|
|
2
2
|
|
|
3
3
|
import { APP_BASE_HREF } from '@angular/common';
|
|
4
|
-
import {
|
|
4
|
+
import { CommonEngine } from '@angular/ssr/node';
|
|
5
5
|
import * as express from 'express';
|
|
6
|
-
import { existsSync } from 'fs';
|
|
7
|
-
import { join } from 'path';
|
|
8
|
-
import <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><% } %> from '
|
|
6
|
+
import { existsSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><% } %> from './<%= main.slice(0, -3) %>';
|
|
9
9
|
|
|
10
10
|
// The Express app is exported so that it can be used by serverless Functions.
|
|
11
11
|
export function app(): express.Express {
|
|
12
12
|
const server = express();
|
|
13
|
-
const distFolder = join(process.cwd(), '<%=
|
|
14
|
-
const indexHtml = existsSync(join(distFolder, 'index.original.html'))
|
|
13
|
+
const distFolder = join(process.cwd(), '<%= browserDistDirectory %>');
|
|
14
|
+
const indexHtml = existsSync(join(distFolder, 'index.original.html'))
|
|
15
|
+
? join(distFolder, 'index.original.html')
|
|
16
|
+
: join(distFolder, 'index.html');
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
server.engine('html', ngExpressEngine({
|
|
18
|
-
bootstrap<% if (!standalone) { %>: <%= rootModuleClassName %><% } %>,
|
|
19
|
-
}));
|
|
18
|
+
const commonEngine = new CommonEngine();
|
|
20
19
|
|
|
21
20
|
server.set('view engine', 'html');
|
|
22
21
|
server.set('views', distFolder);
|
|
@@ -28,9 +27,20 @@ export function app(): express.Express {
|
|
|
28
27
|
maxAge: '1y'
|
|
29
28
|
}));
|
|
30
29
|
|
|
31
|
-
// All regular routes use the
|
|
32
|
-
server.get('*', (req, res) => {
|
|
33
|
-
|
|
30
|
+
// All regular routes use the Angular engine
|
|
31
|
+
server.get('*', (req, res, next) => {
|
|
32
|
+
const { protocol, originalUrl, baseUrl, headers } = req;
|
|
33
|
+
|
|
34
|
+
commonEngine
|
|
35
|
+
.render({
|
|
36
|
+
bootstrap<% if (!standalone) { %>: <%= rootModuleClassName %><% } %>,
|
|
37
|
+
documentFilePath: indexHtml,
|
|
38
|
+
url: `${protocol}://${headers.host}${originalUrl}`,
|
|
39
|
+
publicPath: distFolder,
|
|
40
|
+
providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }],
|
|
41
|
+
})
|
|
42
|
+
.then((html) => res.send(html))
|
|
43
|
+
.catch((err) => next(err));
|
|
34
44
|
});
|
|
35
45
|
|
|
36
46
|
return server;
|
|
@@ -56,4 +66,4 @@ if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
|
|
|
56
66
|
run();
|
|
57
67
|
}
|
|
58
68
|
|
|
59
|
-
export <% if (standalone) { %>
|
|
69
|
+
export default <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><% } %>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { bootstrapApplication } from '@angular/platform-browser';
|
|
2
|
+
import { AppComponent } from './app/app.component';
|
|
3
|
+
import { config } from './app/app.config.server';
|
|
4
|
+
|
|
5
|
+
const bootstrap = () => bootstrapApplication(AppComponent, config);
|
|
6
|
+
|
|
7
|
+
export default bootstrap;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
|
|
2
|
+
import { provideServerRendering } from '@angular/platform-server';
|
|
3
|
+
import { appConfig } from './app.config';
|
|
4
|
+
|
|
5
|
+
const serverConfig: ApplicationConfig = {
|
|
6
|
+
providers: [
|
|
7
|
+
provideServerRendering()
|
|
8
|
+
]
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const config = mergeApplicationConfig(appConfig, serverConfig);
|
|
@@ -6,7 +6,7 @@ const semver_1 = require("semver");
|
|
|
6
6
|
const version_utils_1 = require("../../utils/version-utils");
|
|
7
7
|
function addDependencies(tree, isUsingApplicationBuilder) {
|
|
8
8
|
const pkgVersions = (0, version_utils_1.versions)(tree);
|
|
9
|
-
const {
|
|
9
|
+
const { version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
10
10
|
const dependencies = {
|
|
11
11
|
'@angular/platform-server': (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@angular/platform-server')
|
|
12
12
|
?.version ?? pkgVersions.angularVersion,
|
|
@@ -15,22 +15,11 @@ function addDependencies(tree, isUsingApplicationBuilder) {
|
|
|
15
15
|
const devDependencies = {
|
|
16
16
|
'@types/express': pkgVersions.typesExpressVersion,
|
|
17
17
|
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
devDependencies['browser-sync'] = pkgVersions.browserSyncVersion;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
dependencies['@nguniversal/express-engine'] =
|
|
28
|
-
(0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@nguniversal/express-engine')
|
|
29
|
-
?.version ??
|
|
30
|
-
pkgVersions.ngUniversalVersion;
|
|
31
|
-
devDependencies['@nguniversal/builders'] =
|
|
32
|
-
(0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@nguniversal/builders')?.version ??
|
|
33
|
-
pkgVersions.ngUniversalVersion;
|
|
18
|
+
dependencies['@angular/ssr'] =
|
|
19
|
+
(0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@angular-devkit/build-angular')
|
|
20
|
+
?.version ?? pkgVersions.angularDevkitVersion;
|
|
21
|
+
if (!isUsingApplicationBuilder && (0, semver_1.gte)(angularVersion, '17.1.0')) {
|
|
22
|
+
devDependencies['browser-sync'] = pkgVersions.browserSyncVersion;
|
|
34
23
|
}
|
|
35
24
|
(0, devkit_1.addDependenciesToPackageJson)(tree, dependencies, devDependencies);
|
|
36
25
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type Tree } from '@nx/devkit';
|
|
2
|
-
import {
|
|
3
|
-
export declare function addHydration(tree: Tree, options:
|
|
2
|
+
import type { NormalizedGeneratorOptions } from '../schema';
|
|
3
|
+
export declare function addHydration(tree: Tree, options: NormalizedGeneratorOptions): void;
|
|
@@ -5,6 +5,7 @@ const devkit_1 = require("@nx/devkit");
|
|
|
5
5
|
const js_1 = require("@nx/js");
|
|
6
6
|
const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
|
|
7
7
|
const ast_utils_1 = require("../../../utils/nx-devkit/ast-utils");
|
|
8
|
+
const version_utils_1 = require("../../utils/version-utils");
|
|
8
9
|
let tsModule;
|
|
9
10
|
let tsquery;
|
|
10
11
|
function addHydration(tree, options) {
|
|
@@ -25,11 +26,18 @@ function addHydration(tree, options) {
|
|
|
25
26
|
const addImport = (source, symbolName, packageName, filePath, isDefault = false) => {
|
|
26
27
|
return (0, js_1.insertImport)(tree, source, filePath, symbolName, packageName, isDefault);
|
|
27
28
|
};
|
|
29
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
28
30
|
sourceFile = addImport(sourceFile, 'provideClientHydration', '@angular/platform-browser', pathToClientConfigFile);
|
|
31
|
+
if (angularMajorVersion >= 19) {
|
|
32
|
+
sourceFile = addImport(sourceFile, 'withEventReplay', '@angular/platform-browser', pathToClientConfigFile);
|
|
33
|
+
}
|
|
34
|
+
const provider = angularMajorVersion >= 19
|
|
35
|
+
? 'provideClientHydration(withEventReplay())'
|
|
36
|
+
: 'provideClientHydration()';
|
|
29
37
|
if (options.standalone) {
|
|
30
|
-
(0, ast_utils_1.addProviderToAppConfig)(tree, pathToClientConfigFile,
|
|
38
|
+
(0, ast_utils_1.addProviderToAppConfig)(tree, pathToClientConfigFile, provider);
|
|
31
39
|
}
|
|
32
40
|
else {
|
|
33
|
-
(0, ast_utils_1.addProviderToModule)(tree, sourceFile, pathToClientConfigFile,
|
|
41
|
+
(0, ast_utils_1.addProviderToModule)(tree, sourceFile, pathToClientConfigFile, provider);
|
|
34
42
|
}
|
|
35
43
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Tree } from '@nx/devkit';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function addServerFile(tree: Tree,
|
|
2
|
+
import type { NormalizedGeneratorOptions } from '../schema';
|
|
3
|
+
export declare function addServerFile(tree: Tree, options: NormalizedGeneratorOptions): void;
|
|
@@ -2,21 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addServerFile = addServerFile;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const path_1 = require("path");
|
|
5
6
|
const version_utils_1 = require("../../utils/version-utils");
|
|
6
7
|
const constants_1 = require("./constants");
|
|
7
|
-
function addServerFile(tree,
|
|
8
|
-
const
|
|
9
|
-
const { outputPath } = targets.build.options;
|
|
10
|
-
const
|
|
8
|
+
function addServerFile(tree, options) {
|
|
9
|
+
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
10
|
+
const { outputPath } = project.targets.build.options;
|
|
11
|
+
const browserDistDirectory = options.isUsingApplicationBuilder
|
|
11
12
|
? getApplicationBuilderBrowserOutputPath(outputPath)
|
|
12
13
|
: outputPath;
|
|
13
|
-
const pathToFiles = (0, devkit_1.joinPathFragments)(__dirname, '..', 'files');
|
|
14
14
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
const baseFilesPath = (0, path_1.join)(__dirname, '..', 'files');
|
|
16
|
+
let pathToFiles;
|
|
17
|
+
if (angularMajorVersion >= 19) {
|
|
18
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'v19+', options.isUsingApplicationBuilder
|
|
19
|
+
? 'application-builder' +
|
|
20
|
+
(options.serverRouting ? '' : '-common-engine')
|
|
21
|
+
: 'server-builder', 'server');
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'pre-v19', 'server', options.isUsingApplicationBuilder
|
|
25
|
+
? 'application-builder'
|
|
26
|
+
: 'server-builder');
|
|
27
|
+
}
|
|
28
|
+
const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
|
|
29
|
+
(0, devkit_1.generateFiles)(tree, pathToFiles, angularMajorVersion >= 19 ? sourceRoot : project.root, {
|
|
30
|
+
...options,
|
|
31
|
+
browserDistDirectory,
|
|
32
|
+
tpl: '',
|
|
33
|
+
});
|
|
20
34
|
}
|
|
21
35
|
function getApplicationBuilderBrowserOutputPath(outputPath) {
|
|
22
36
|
if (outputPath) {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Tree } from '@nx/devkit';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function generateSSRFiles(tree: Tree,
|
|
2
|
+
import type { NormalizedGeneratorOptions } from '../schema';
|
|
3
|
+
export declare function generateSSRFiles(tree: Tree, options: NormalizedGeneratorOptions): void;
|
|
@@ -2,18 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateSSRFiles = generateSSRFiles;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const version_utils_1 = require("../../utils/version-utils");
|
|
7
|
+
function generateSSRFiles(tree, options) {
|
|
8
|
+
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
9
|
+
if (project.targets.server ||
|
|
10
|
+
(options.isUsingApplicationBuilder &&
|
|
11
|
+
project.targets.build.options?.server !== undefined)) {
|
|
9
12
|
// server has already been added
|
|
10
13
|
return;
|
|
11
14
|
}
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
16
|
+
const baseFilesPath = (0, path_1.join)(__dirname, '..', 'files');
|
|
17
|
+
let pathToFiles;
|
|
18
|
+
if (angularMajorVersion >= 19) {
|
|
19
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'v19+', options.isUsingApplicationBuilder
|
|
20
|
+
? 'application-builder'
|
|
21
|
+
: 'server-builder', options.standalone ? 'standalone-src' : 'ngmodule-src');
|
|
15
22
|
}
|
|
16
23
|
else {
|
|
17
|
-
|
|
24
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'pre-v19', options.standalone ? 'standalone-src' : 'ngmodule-src');
|
|
25
|
+
}
|
|
26
|
+
const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
|
|
27
|
+
(0, devkit_1.generateFiles)(tree, pathToFiles, sourceRoot, { ...options, tpl: '' });
|
|
28
|
+
if (angularMajorVersion >= 19 && !options.serverRouting) {
|
|
29
|
+
tree.delete((0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.routes.server.ts'));
|
|
18
30
|
}
|
|
19
31
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type Tree } from '@nx/devkit';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function setServerTsConfigOptionsForApplicationBuilder(tree: Tree, options:
|
|
4
|
-
export declare function generateTsConfigServerJsonForBrowserBuilder(tree: Tree, options:
|
|
2
|
+
import type { NormalizedGeneratorOptions } from '../schema';
|
|
3
|
+
export declare function setServerTsConfigOptionsForApplicationBuilder(tree: Tree, options: NormalizedGeneratorOptions): void;
|
|
4
|
+
export declare function generateTsConfigServerJsonForBrowserBuilder(tree: Tree, options: NormalizedGeneratorOptions): void;
|
|
@@ -4,13 +4,20 @@ exports.setServerTsConfigOptionsForApplicationBuilder = setServerTsConfigOptions
|
|
|
4
4
|
exports.generateTsConfigServerJsonForBrowserBuilder = generateTsConfigServerJsonForBrowserBuilder;
|
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
|
6
6
|
const path_1 = require("path");
|
|
7
|
+
const version_utils_1 = require("../../utils/version-utils");
|
|
7
8
|
function setServerTsConfigOptionsForApplicationBuilder(tree, options) {
|
|
8
9
|
const { targets } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
9
10
|
const tsConfigPath = targets.build.options.tsConfig;
|
|
10
11
|
(0, devkit_1.updateJson)(tree, tsConfigPath, (json) => {
|
|
12
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
11
13
|
const files = new Set(json.files ?? []);
|
|
12
14
|
files.add((0, devkit_1.joinPathFragments)('src', options.main));
|
|
13
|
-
|
|
15
|
+
if (angularMajorVersion >= 19) {
|
|
16
|
+
files.add((0, devkit_1.joinPathFragments)('src', options.serverFileName));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
files.add((0, devkit_1.joinPathFragments)(options.serverFileName));
|
|
20
|
+
}
|
|
14
21
|
json.files = Array.from(files);
|
|
15
22
|
json.compilerOptions ??= {};
|
|
16
23
|
const types = new Set(json.compilerOptions.types ?? []);
|
|
@@ -20,9 +27,23 @@ function setServerTsConfigOptionsForApplicationBuilder(tree, options) {
|
|
|
20
27
|
});
|
|
21
28
|
}
|
|
22
29
|
function generateTsConfigServerJsonForBrowserBuilder(tree, options) {
|
|
23
|
-
const
|
|
24
|
-
|
|
30
|
+
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
31
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
32
|
+
const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
|
|
33
|
+
const hasLocalizePackage = !!packageJson.dependencies?.['@angular/localize'] ||
|
|
34
|
+
!!packageJson.devDependencies?.['@angular/localize'];
|
|
35
|
+
const baseFilesPath = (0, path_1.join)(__dirname, '..', 'files');
|
|
36
|
+
let pathToFiles;
|
|
37
|
+
if (angularMajorVersion >= 19) {
|
|
38
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'v19+', 'server-builder', 'root');
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'pre-v19', 'root');
|
|
42
|
+
}
|
|
43
|
+
(0, devkit_1.generateFiles)(tree, pathToFiles, project.root, {
|
|
25
44
|
...options,
|
|
45
|
+
rootOffset: (0, devkit_1.offsetFromRoot)(project.root),
|
|
46
|
+
hasLocalizePackage,
|
|
26
47
|
tpl: '',
|
|
27
48
|
});
|
|
28
49
|
}
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { Schema } from '../schema';
|
|
3
|
-
export declare function normalizeOptions(tree: Tree, options: Schema):
|
|
4
|
-
project: string;
|
|
5
|
-
appId: string;
|
|
6
|
-
main: string;
|
|
7
|
-
serverFileName: string;
|
|
8
|
-
serverPort: number;
|
|
9
|
-
rootModuleFileName: string;
|
|
10
|
-
rootModuleClassName: string;
|
|
11
|
-
skipFormat: boolean;
|
|
12
|
-
standalone: boolean;
|
|
13
|
-
hydration: boolean;
|
|
14
|
-
};
|
|
1
|
+
import { type Tree } from '@nx/devkit';
|
|
2
|
+
import type { NormalizedGeneratorOptions, Schema } from '../schema';
|
|
3
|
+
export declare function normalizeOptions(tree: Tree, options: Schema): Promise<NormalizedGeneratorOptions>;
|
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeOptions = normalizeOptions;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const prompt_1 = require("@nx/devkit/src/generators/prompt");
|
|
4
6
|
const ast_utils_1 = require("../../../utils/nx-devkit/ast-utils");
|
|
5
7
|
const version_utils_1 = require("../../utils/version-utils");
|
|
6
|
-
function normalizeOptions(tree, options) {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
async function normalizeOptions(tree, options) {
|
|
9
|
+
const { targets } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
10
|
+
const isUsingApplicationBuilder = targets.build.executor === '@angular-devkit/build-angular:application' ||
|
|
11
|
+
targets.build.executor === '@angular/build:application' ||
|
|
12
|
+
targets.build.executor === '@nx/angular:application';
|
|
13
|
+
if (options.serverRouting === undefined && isUsingApplicationBuilder) {
|
|
10
14
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
11
|
-
|
|
15
|
+
if (angularMajorVersion >= 19) {
|
|
16
|
+
options.serverRouting = await (0, prompt_1.promptWhenInteractive)({
|
|
17
|
+
type: 'confirm',
|
|
18
|
+
name: 'serverRouting',
|
|
19
|
+
message: 'Would you like to use the Server Routing and App Engine APIs (Developer Preview) for this server application?',
|
|
20
|
+
initial: false,
|
|
21
|
+
}, { serverRouting: false }).then(({ serverRouting }) => serverRouting);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
options.serverRouting = false;
|
|
25
|
+
}
|
|
12
26
|
}
|
|
27
|
+
const isStandaloneApp = (0, ast_utils_1.isNgStandaloneApp)(tree, options.project);
|
|
13
28
|
return {
|
|
14
29
|
project: options.project,
|
|
15
30
|
appId: options.appId ?? 'serverApp',
|
|
@@ -20,6 +35,8 @@ function normalizeOptions(tree, options) {
|
|
|
20
35
|
rootModuleClassName: options.rootModuleClassName ?? 'AppServerModule',
|
|
21
36
|
skipFormat: options.skipFormat ?? false,
|
|
22
37
|
standalone: options.standalone ?? isStandaloneApp,
|
|
23
|
-
hydration,
|
|
38
|
+
hydration: options.hydration ?? true,
|
|
39
|
+
serverRouting: options.serverRouting,
|
|
40
|
+
isUsingApplicationBuilder,
|
|
24
41
|
};
|
|
25
42
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type Tree } from '@nx/devkit';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function setRouterInitialNavigation(tree: Tree, options:
|
|
2
|
+
import type { NormalizedGeneratorOptions } from '../schema';
|
|
3
|
+
export declare function setRouterInitialNavigation(tree: Tree, options: NormalizedGeneratorOptions): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Tree } from '@nx/devkit';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function updateProjectConfigForApplicationBuilder(tree: Tree, options:
|
|
4
|
-
export declare function updateProjectConfigForBrowserBuilder(tree: Tree,
|
|
2
|
+
import type { NormalizedGeneratorOptions } from '../schema';
|
|
3
|
+
export declare function updateProjectConfigForApplicationBuilder(tree: Tree, options: NormalizedGeneratorOptions): void;
|
|
4
|
+
export declare function updateProjectConfigForBrowserBuilder(tree: Tree, options: NormalizedGeneratorOptions): void;
|
|
@@ -23,17 +23,32 @@ function updateProjectConfigForApplicationBuilder(tree, options) {
|
|
|
23
23
|
outputPath = outputPath.base;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
27
|
+
const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
|
|
26
28
|
buildTarget.options ??= {};
|
|
27
29
|
buildTarget.options.outputPath = outputPath;
|
|
28
|
-
buildTarget.options.server = (0, devkit_1.joinPathFragments)(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
buildTarget.options.server = (0, devkit_1.joinPathFragments)(sourceRoot, options.main);
|
|
31
|
+
if (angularMajorVersion >= 19) {
|
|
32
|
+
buildTarget.options.ssr = {
|
|
33
|
+
entry: (0, devkit_1.joinPathFragments)(sourceRoot, options.serverFileName),
|
|
34
|
+
};
|
|
35
|
+
if (options.serverRouting) {
|
|
36
|
+
buildTarget.options.outputMode = 'server';
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
buildTarget.options.prerender = true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
buildTarget.options.prerender = true;
|
|
44
|
+
buildTarget.options.ssr = {
|
|
45
|
+
entry: (0, devkit_1.joinPathFragments)(project.root, options.serverFileName),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
33
48
|
(0, devkit_1.updateProjectConfiguration)(tree, options.project, project);
|
|
34
49
|
}
|
|
35
|
-
function updateProjectConfigForBrowserBuilder(tree,
|
|
36
|
-
const projectConfig = (0, devkit_1.readProjectConfiguration)(tree,
|
|
50
|
+
function updateProjectConfigForBrowserBuilder(tree, options) {
|
|
51
|
+
const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
37
52
|
const buildTarget = projectConfig.targets.build;
|
|
38
53
|
const baseOutputPath = buildTarget.options.outputPath;
|
|
39
54
|
buildTarget.options.outputPath = (0, devkit_1.joinPathFragments)(baseOutputPath, 'browser');
|
|
@@ -44,6 +59,8 @@ function updateProjectConfigForBrowserBuilder(tree, schema) {
|
|
|
44
59
|
configurations[key] = getServerOptions(options);
|
|
45
60
|
}
|
|
46
61
|
}
|
|
62
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
63
|
+
const sourceRoot = projectConfig.sourceRoot ?? (0, devkit_1.joinPathFragments)(projectConfig.root, 'src');
|
|
47
64
|
projectConfig.targets.server = {
|
|
48
65
|
dependsOn: ['build'],
|
|
49
66
|
executor: buildTarget.executor.startsWith('@angular-devkit/build-angular:')
|
|
@@ -51,50 +68,45 @@ function updateProjectConfigForBrowserBuilder(tree, schema) {
|
|
|
51
68
|
: '@nx/angular:webpack-server',
|
|
52
69
|
options: {
|
|
53
70
|
outputPath: (0, devkit_1.joinPathFragments)(baseOutputPath, 'server'),
|
|
54
|
-
main: (0, devkit_1.joinPathFragments)(projectConfig.root,
|
|
71
|
+
main: (0, devkit_1.joinPathFragments)(angularMajorVersion >= 19 ? sourceRoot : projectConfig.root, options.serverFileName),
|
|
55
72
|
tsConfig: (0, devkit_1.joinPathFragments)(projectConfig.root, 'tsconfig.server.json'),
|
|
56
73
|
...(buildTarget.options ? getServerOptions(buildTarget.options) : {}),
|
|
57
74
|
},
|
|
58
75
|
configurations,
|
|
59
76
|
defaultConfiguration: 'production',
|
|
60
77
|
};
|
|
61
|
-
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
62
78
|
projectConfig.targets['serve-ssr'] = {
|
|
63
|
-
executor:
|
|
64
|
-
? '@angular-devkit/build-angular:ssr-dev-server'
|
|
65
|
-
: '@nguniversal/builders:ssr-dev-server',
|
|
79
|
+
executor: '@angular-devkit/build-angular:ssr-dev-server',
|
|
66
80
|
configurations: {
|
|
67
81
|
development: {
|
|
68
|
-
browserTarget: `${
|
|
69
|
-
serverTarget: `${
|
|
82
|
+
browserTarget: `${options.project}:build:development`,
|
|
83
|
+
serverTarget: `${options.project}:server:development`,
|
|
70
84
|
},
|
|
71
85
|
production: {
|
|
72
|
-
browserTarget: `${
|
|
73
|
-
serverTarget: `${
|
|
86
|
+
browserTarget: `${options.project}:build:production`,
|
|
87
|
+
serverTarget: `${options.project}:server:production`,
|
|
74
88
|
},
|
|
75
89
|
},
|
|
76
90
|
defaultConfiguration: 'development',
|
|
77
91
|
};
|
|
78
92
|
projectConfig.targets.prerender = {
|
|
79
|
-
executor:
|
|
80
|
-
? '@angular-devkit/build-angular:prerender'
|
|
81
|
-
: '@nguniversal/builders:prerender',
|
|
93
|
+
executor: '@angular-devkit/build-angular:prerender',
|
|
82
94
|
options: {
|
|
83
95
|
routes: ['/'],
|
|
84
96
|
},
|
|
85
97
|
configurations: {
|
|
86
98
|
development: {
|
|
87
|
-
browserTarget: `${
|
|
88
|
-
serverTarget: `${
|
|
99
|
+
browserTarget: `${options.project}:build:development`,
|
|
100
|
+
serverTarget: `${options.project}:server:development`,
|
|
89
101
|
},
|
|
90
102
|
production: {
|
|
91
|
-
browserTarget: `${
|
|
92
|
-
serverTarget: `${
|
|
103
|
+
browserTarget: `${options.project}:build:production`,
|
|
104
|
+
serverTarget: `${options.project}:server:production`,
|
|
93
105
|
},
|
|
94
106
|
},
|
|
95
107
|
defaultConfiguration: 'production',
|
|
96
108
|
};
|
|
97
|
-
(0, devkit_1.updateProjectConfiguration)(tree,
|
|
109
|
+
(0, devkit_1.updateProjectConfiguration)(tree, options.project, projectConfig);
|
|
98
110
|
const nxJson = (0, devkit_1.readNxJson)(tree);
|
|
99
111
|
if (nxJson.tasksRunnerOptions?.default?.options?.cacheableOperations &&
|
|
100
112
|
!nxJson.tasksRunnerOptions.default.options.cacheableOperations.includes('server')) {
|
|
@@ -3,9 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.validateOptions = validateOptions;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
5
|
const validations_1 = require("../../utils/validations");
|
|
6
|
+
const version_utils_1 = require("../../utils/version-utils");
|
|
6
7
|
function validateOptions(tree, options) {
|
|
7
8
|
validateProject(tree, options.project);
|
|
8
9
|
validateBuildTarget(tree, options.project);
|
|
10
|
+
const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
11
|
+
if (angularMajorVersion < 19 && options.serverRouting) {
|
|
12
|
+
throw new Error(`The "serverRouting" option is only supported in Angular versions >= 19.0.0. You are using Angular ${angularVersion}.`);
|
|
13
|
+
}
|
|
9
14
|
}
|
|
10
15
|
function validateProject(tree, project) {
|
|
11
16
|
(0, validations_1.validateProject)(tree, project);
|
|
@@ -8,6 +8,11 @@ export interface Schema {
|
|
|
8
8
|
rootModuleClassName?: string;
|
|
9
9
|
standalone?: boolean;
|
|
10
10
|
hydration?: boolean;
|
|
11
|
+
serverRouting?: boolean;
|
|
11
12
|
skipFormat?: boolean;
|
|
12
13
|
skipPackageJson?: boolean;
|
|
13
14
|
}
|
|
15
|
+
|
|
16
|
+
export interface NormalizedGeneratorOptions extends Schema {
|
|
17
|
+
isUsingApplicationBuilder: boolean;
|
|
18
|
+
}
|
|
@@ -16,13 +16,6 @@
|
|
|
16
16
|
"x-prompt": "What app would you like to generate an Angular Universal configuration for?",
|
|
17
17
|
"x-dropdown": "projects"
|
|
18
18
|
},
|
|
19
|
-
"appId": {
|
|
20
|
-
"type": "string",
|
|
21
|
-
"format": "html-selector",
|
|
22
|
-
"description": "The `appId` to use with `withServerTransition`.",
|
|
23
|
-
"default": "serverApp",
|
|
24
|
-
"x-deprecated": "This is deprecated and ignored since Angular 16 and not supported since Angular 17."
|
|
25
|
-
},
|
|
26
19
|
"main": {
|
|
27
20
|
"type": "string",
|
|
28
21
|
"format": "path",
|
|
@@ -56,7 +49,12 @@
|
|
|
56
49
|
},
|
|
57
50
|
"hydration": {
|
|
58
51
|
"type": "boolean",
|
|
59
|
-
"description": "Set up Hydration for the SSR application.
|
|
52
|
+
"description": "Set up Hydration for the SSR application.",
|
|
53
|
+
"default": true
|
|
54
|
+
},
|
|
55
|
+
"serverRouting": {
|
|
56
|
+
"description": "Creates a server application using the Server Routing and App Engine APIs (Developer Preview). _Note: this is only supported in Angular versions >= 19.0.0_.",
|
|
57
|
+
"type": "boolean"
|
|
60
58
|
},
|
|
61
59
|
"skipFormat": {
|
|
62
60
|
"type": "boolean",
|
|
@@ -2,26 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.setupSsr = setupSsr;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
-
const version_utils_1 = require("../utils/version-utils");
|
|
6
5
|
const lib_1 = require("./lib");
|
|
7
6
|
async function setupSsr(tree, schema) {
|
|
8
7
|
(0, lib_1.validateOptions)(tree, schema);
|
|
9
|
-
const options = (0, lib_1.normalizeOptions)(tree, schema);
|
|
10
|
-
const { targets } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
|
11
|
-
const isUsingApplicationBuilder = targets.build.executor === '@angular-devkit/build-angular:application' ||
|
|
12
|
-
targets.build.executor === '@nx/angular:application';
|
|
8
|
+
const options = await (0, lib_1.normalizeOptions)(tree, schema);
|
|
13
9
|
if (!schema.skipPackageJson) {
|
|
14
|
-
(0, lib_1.addDependencies)(tree, isUsingApplicationBuilder);
|
|
10
|
+
(0, lib_1.addDependencies)(tree, options.isUsingApplicationBuilder);
|
|
15
11
|
}
|
|
16
|
-
(0, lib_1.generateSSRFiles)(tree, options
|
|
12
|
+
(0, lib_1.generateSSRFiles)(tree, options);
|
|
17
13
|
if (options.hydration) {
|
|
18
14
|
(0, lib_1.addHydration)(tree, options);
|
|
19
15
|
}
|
|
20
|
-
|
|
21
|
-
if (angularMajorVersion < 17 || !options.hydration) {
|
|
16
|
+
if (!options.hydration) {
|
|
22
17
|
(0, lib_1.setRouterInitialNavigation)(tree, options);
|
|
23
18
|
}
|
|
24
|
-
if (isUsingApplicationBuilder) {
|
|
19
|
+
if (options.isUsingApplicationBuilder) {
|
|
25
20
|
(0, lib_1.updateProjectConfigForApplicationBuilder)(tree, options);
|
|
26
21
|
(0, lib_1.setServerTsConfigOptionsForApplicationBuilder)(tree, options);
|
|
27
22
|
}
|
|
@@ -29,7 +24,7 @@ async function setupSsr(tree, schema) {
|
|
|
29
24
|
(0, lib_1.updateProjectConfigForBrowserBuilder)(tree, options);
|
|
30
25
|
(0, lib_1.generateTsConfigServerJsonForBrowserBuilder)(tree, options);
|
|
31
26
|
}
|
|
32
|
-
(0, lib_1.addServerFile)(tree, options
|
|
27
|
+
(0, lib_1.addServerFile)(tree, options);
|
|
33
28
|
if (!options.skipFormat) {
|
|
34
29
|
await (0, devkit_1.formatFiles)(tree);
|
|
35
30
|
}
|