@nx/angular 21.1.2 → 21.2.0-beta.2
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/README.md +4 -4
- package/fesm2022/nx-angular-mf.mjs +10 -3
- package/fesm2022/nx-angular-mf.mjs.map +1 -1
- package/fesm2022/nx-angular.mjs.map +1 -1
- package/index.d.ts +2 -1
- package/mf/index.d.ts +71 -1
- package/migrations.json +106 -0
- package/ng-package.json +0 -1
- package/package.json +28 -16
- package/plugins/component-testing.js +8 -3
- package/src/builders/dev-server/dev-server.impl.js +4 -7
- package/src/builders/dev-server/lib/normalize-options.js +0 -6
- package/src/builders/dev-server/lib/validate-options.js +0 -4
- package/src/builders/dev-server/schema.d.ts +3 -15
- package/src/builders/dev-server/schema.json +3 -9
- package/src/builders/webpack-browser/webpack-browser.impl.js +2 -0
- package/src/builders/webpack-server/webpack-server.impl.d.ts +3 -1
- package/src/builders/webpack-server/webpack-server.impl.js +2 -0
- package/src/executors/application/application.impl.d.ts +2 -2
- package/src/executors/application/application.impl.js +11 -6
- package/src/executors/application/schema.d.ts +1 -1
- package/src/executors/application/schema.json +21 -10
- package/src/executors/application/utils/normalize-options.js +8 -1
- package/src/executors/application/utils/validate-options.js +10 -40
- package/src/executors/extract-i18n/extract-i18n.impl.js +6 -14
- package/src/executors/extract-i18n/schema.d.ts +1 -6
- package/src/executors/extract-i18n/schema.json +5 -0
- package/src/executors/extract-i18n/utils/validate-options.d.ts +2 -0
- package/src/executors/extract-i18n/utils/validate-options.js +13 -0
- package/src/executors/module-federation-dev-server/lib/normalize-options.js +1 -7
- package/src/executors/module-federation-dev-server/schema.d.ts +3 -15
- package/src/executors/module-federation-dev-server/schema.json +2 -15
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +10 -8
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.d.ts +6 -3
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.js +46 -8
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.d.ts +1 -1
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.js +3 -3
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.d.ts +2 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.js +36 -7
- package/src/executors/ng-packagr-lite/schema.json +2 -3
- package/src/executors/package/package.impl.js +1 -5
- package/src/executors/package/schema.d.ts +3 -1
- package/src/executors/package/schema.json +2 -3
- package/src/executors/utilities/builder-package.d.ts +1 -0
- package/src/executors/utilities/builder-package.js +11 -0
- package/src/executors/utilities/esbuild-extensions.d.ts +2 -1
- package/src/executors/utilities/ng-packagr/package-imports.d.ts +3 -1
- package/src/executors/utilities/ng-packagr/package-imports.js +2 -2
- package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.d.ts +2 -24
- package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.js +40 -107
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +4 -8
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts +1 -1
- package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.js +18 -11
- package/src/generators/add-linting/add-linting.js +8 -0
- package/src/generators/application/application.js +22 -8
- package/src/generators/application/files/base/tsconfig.app.json__tpl__ +10 -1
- package/src/generators/application/files/base/tsconfig.json__tpl__ +7 -8
- package/src/generators/application/files/ng-module/src/app/app__componentFileSuffix__.spec.ts__tpl__ +28 -0
- package/src/generators/application/files/ng-module/src/app/{app.component.ts__tpl__ → app__componentFileSuffix__.ts__tpl__} +4 -4
- package/src/generators/application/files/ng-module/src/app/app__moduleTypeSeparator__module.ts__tpl__ +17 -0
- package/src/generators/application/files/ng-module/src/main.ts__tpl__ +11 -3
- package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/nx-welcome/claimed/standalone/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/nx-welcome/not-configured/ng-module/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/nx-welcome/not-configured/standalone/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/nx-welcome/unclaimed/ng-module/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/nx-welcome/unclaimed/standalone/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
- package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +6 -2
- package/src/generators/application/files/standalone-components/src/app/app__componentFileSuffix__.spec.ts__tpl__ +27 -0
- package/src/generators/application/files/standalone-components/src/app/{app.component.ts__tpl__ → app__componentFileSuffix__.ts__tpl__} +6 -6
- package/src/generators/application/files/standalone-components/src/main.ts__tpl__ +2 -2
- package/src/generators/application/lib/create-files.d.ts +1 -1
- package/src/generators/application/lib/create-files.js +18 -19
- package/src/generators/application/lib/create-project.d.ts +1 -1
- package/src/generators/application/lib/create-project.js +119 -26
- package/src/generators/application/lib/enable-strict-type-checking.js +4 -2
- package/src/generators/application/lib/index.d.ts +1 -2
- package/src/generators/application/lib/index.js +1 -2
- package/src/generators/application/lib/set-generator-defaults.js +1 -0
- package/src/generators/application/lib/{update-editor-tsconfig.d.ts → update-tsconfig-files.d.ts} +1 -1
- package/src/generators/application/lib/update-tsconfig-files.js +93 -0
- package/src/generators/application/schema.json +1 -1
- package/src/generators/component/component.js +13 -2
- package/src/generators/component/files/__fileName__.ts__tpl__ +1 -1
- package/src/generators/component/lib/component.js +11 -1
- package/src/generators/component/lib/module.d.ts +7 -2
- package/src/generators/component/lib/module.js +7 -5
- package/src/generators/component/lib/normalize-options.js +7 -3
- package/src/generators/component/schema.d.ts +1 -0
- package/src/generators/component/schema.json +6 -2
- package/src/generators/convert-to-application-executor/convert-to-application-executor.js +37 -24
- package/src/generators/convert-to-rspack/convert-to-rspack.d.ts +1 -1
- package/src/generators/convert-to-rspack/convert-to-rspack.js +173 -28
- package/src/generators/convert-to-rspack/lib/get-custom-webpack-config.js +1 -1
- package/src/generators/directive/directive.js +1 -1
- package/src/generators/directive/lib/normalize-options.js +7 -2
- package/src/generators/directive/schema.d.ts +1 -0
- package/src/generators/directive/schema.json +10 -2
- package/src/generators/host/host.js +21 -1
- package/src/generators/host/schema.d.ts +1 -0
- package/src/generators/host/schema.json +7 -1
- package/src/generators/init/init.js +1 -1
- package/src/generators/library/files/base/tsconfig.json__tpl__ +5 -5
- package/src/generators/library/files/ng-module/src/index.ts__tpl__ +1 -1
- package/src/generators/library/files/standalone-components/src/lib/lib.routes.ts__tpl__ +2 -2
- package/src/generators/library/lib/add-standalone-component.js +1 -0
- package/src/generators/library/lib/create-files.js +10 -3
- package/src/generators/library/lib/normalize-options.d.ts +3 -3
- package/src/generators/library/lib/normalize-options.js +6 -1
- package/src/generators/library/lib/normalized-schema.d.ts +2 -0
- package/src/generators/library/lib/set-generator-defaults.js +1 -0
- package/src/generators/library/lib/update-tsconfig-files.d.ts +3 -0
- package/src/generators/library/lib/update-tsconfig-files.js +98 -0
- package/src/generators/library/library.js +19 -33
- package/src/generators/library-secondary-entry-point/files/src/index.ts__tmpl__ +1 -1
- package/src/generators/library-secondary-entry-point/lib/add-files.js +2 -1
- package/src/generators/library-secondary-entry-point/lib/normalize-options.d.ts +2 -2
- package/src/generators/library-secondary-entry-point/lib/normalize-options.js +3 -0
- package/src/generators/library-secondary-entry-point/schema.d.ts +1 -0
- package/src/generators/move/lib/update-module-name.js +17 -10
- package/src/generators/move/lib/update-secondary-entry-points.js +0 -3
- package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +1 -1
- package/src/generators/ng-add/migrators/projects/app.migrator.js +43 -8
- package/src/generators/ngrx/schema.json +3 -3
- package/src/generators/ngrx-root-store/lib/normalize-options.js +9 -2
- package/src/generators/pipe/lib/normalize-options.js +4 -0
- package/src/generators/pipe/pipe.js +1 -1
- package/src/generators/pipe/schema.d.ts +1 -0
- package/src/generators/pipe/schema.json +11 -2
- package/src/generators/remote/files/standalone/src/bootstrap.server.ts__tmpl__ +4 -4
- package/src/generators/remote/lib/update-ssr-setup.js +5 -0
- package/src/generators/remote/remote.js +23 -0
- package/src/generators/remote/schema.d.ts +1 -0
- package/src/generators/remote/schema.json +7 -1
- package/src/generators/scam/lib/convert-component-to-scam.js +1 -3
- package/src/generators/scam/lib/normalize-options.js +11 -3
- package/src/generators/scam/schema.d.ts +1 -0
- package/src/generators/scam/schema.json +1 -2
- package/src/generators/scam-directive/lib/convert-directive-to-scam.js +1 -3
- package/src/generators/scam-directive/lib/normalize-options.js +11 -2
- package/src/generators/scam-directive/schema.d.ts +2 -0
- package/src/generators/scam-directive/schema.json +10 -2
- package/src/generators/scam-pipe/lib/convert-pipe-to-scam.js +1 -3
- package/src/generators/scam-pipe/lib/normalize-options.js +8 -0
- package/src/generators/scam-pipe/schema.d.ts +2 -0
- package/src/generators/scam-pipe/schema.json +5 -0
- package/src/generators/setup-mf/files/entry-module-files/{entry.module.ts__tmpl__ → __entryModuleFileName__.ts__tmpl__} +4 -4
- package/src/generators/setup-mf/files/entry-module-files/entry.routes.ts__tmpl__ +2 -2
- package/src/generators/setup-mf/files/entry-module-files/{entry.component.ts__tmpl__ → entry__componentFileSuffix__.ts__tmpl__} +1 -1
- package/src/generators/setup-mf/files/host-files/__appFileName__.spec.ts__tmpl__ +43 -0
- package/src/generators/setup-mf/files/standalone-entry-component-files/entry.routes.ts__tmpl__ +2 -2
- package/src/generators/setup-mf/files/standalone-entry-component-files/{entry.component.ts__tmpl__ → entry__componentFileSuffix__.ts__tmpl__} +3 -3
- package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +1 -1
- package/src/generators/setup-mf/files/ts-webpack/tsconfig.lint.json__tmpl__ +1 -1
- package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +1 -1
- package/src/generators/setup-mf/lib/add-remote-entry.d.ts +2 -2
- package/src/generators/setup-mf/lib/add-remote-entry.js +9 -3
- package/src/generators/setup-mf/lib/add-remote-to-host.js +11 -1
- package/src/generators/setup-mf/lib/fix-bootstrap.d.ts +2 -2
- package/src/generators/setup-mf/lib/fix-bootstrap.js +4 -4
- package/src/generators/setup-mf/lib/generate-config.d.ts +2 -2
- package/src/generators/setup-mf/lib/generate-config.js +1 -0
- package/src/generators/setup-mf/lib/normalize-options.d.ts +1 -1
- package/src/generators/setup-mf/lib/normalize-options.js +13 -0
- package/src/generators/setup-mf/lib/remove-dead-code-from-remote.d.ts +2 -2
- package/src/generators/setup-mf/lib/remove-dead-code-from-remote.js +18 -14
- package/src/generators/setup-mf/lib/setup-host-if-dynamic.js +1 -5
- package/src/generators/setup-mf/lib/setup-tspath-for-remote.d.ts +2 -2
- package/src/generators/setup-mf/lib/setup-tspath-for-remote.js +1 -1
- package/src/generators/setup-mf/lib/update-host-app-routes.d.ts +2 -2
- package/src/generators/setup-mf/lib/update-host-app-routes.js +12 -9
- package/src/generators/setup-mf/lib/update-tsconfig.d.ts +2 -2
- package/src/generators/setup-mf/lib/update-tsconfig.js +5 -5
- package/src/generators/setup-mf/schema.d.ts +7 -0
- package/src/generators/setup-mf/setup-mf.d.ts +2 -2
- package/src/generators/setup-mf/setup-mf.js +16 -6
- package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/__main__ +1 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/app/__rootModuleFileName__ +12 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +8 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/server/__serverFileName__ +66 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/__main__ +7 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/app/app.config.server.ts__tpl__ +12 -0
- package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +8 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/ngmodule-src/__main__ +1 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/ngmodule-src/app/__rootModuleFileName__ +14 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/root/tsconfig.server.json.template +18 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/server/__serverFileName__ +69 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/standalone-src/__main__ +7 -0
- package/src/generators/setup-ssr/files/v20+/server-builder/standalone-src/app/app.config.server.ts.template +11 -0
- package/src/generators/setup-ssr/lib/add-dependencies.js +11 -8
- package/src/generators/setup-ssr/lib/add-hydration.js +10 -3
- package/src/generators/setup-ssr/lib/add-server-file.js +7 -2
- package/src/generators/setup-ssr/lib/generate-files.js +17 -4
- package/src/generators/setup-ssr/lib/generate-server-ts-config.js +32 -6
- package/src/generators/setup-ssr/lib/normalize-options.js +5 -3
- package/src/generators/setup-ssr/lib/update-project-config.js +5 -0
- package/src/generators/setup-ssr/lib/validate-options.js +2 -2
- package/src/generators/setup-ssr/schema.d.ts +1 -0
- package/src/generators/setup-ssr/schema.json +1 -1
- package/src/generators/utils/add-jest.js +6 -1
- package/src/generators/utils/app-components-info.d.ts +9 -0
- package/src/generators/utils/app-components-info.js +39 -0
- package/src/generators/utils/artifact-types.d.ts +3 -0
- package/src/generators/utils/artifact-types.js +33 -0
- package/src/generators/utils/assert-mf-utils.d.ts +1 -0
- package/src/generators/utils/assert-mf-utils.js +11 -0
- package/src/generators/utils/ensure-angular-dependencies.js +6 -3
- package/src/generators/utils/export-scam.d.ts +1 -0
- package/src/generators/utils/export-scam.js +1 -2
- package/src/generators/utils/find-module.js +18 -13
- package/src/generators/utils/storybook-ast/component-info.js +40 -24
- package/src/generators/utils/storybook-ast/module-info.d.ts +1 -1
- package/src/generators/utils/storybook-ast/module-info.js +3 -8
- package/src/generators/utils/testing.js +28 -28
- package/src/generators/utils/version-utils.js +2 -2
- package/src/generators/web-worker/lib/add-snippet.js +3 -3
- package/src/migrations/update-21-2-0/migrate-provide-server-rendering-import.d.ts +2 -0
- package/src/migrations/update-21-2-0/migrate-provide-server-rendering-import.js +110 -0
- package/src/migrations/update-21-2-0/replace-provide-server-routing.d.ts +2 -0
- package/src/migrations/update-21-2-0/replace-provide-server-routing.js +103 -0
- package/src/migrations/update-21-2-0/set-generator-defaults-for-previous-style-guide.d.ts +2 -0
- package/src/migrations/update-21-2-0/set-generator-defaults-for-previous-style-guide.js +47 -0
- package/src/migrations/update-21-2-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-21-2-0/update-angular-cli.js +23 -0
- package/src/migrations/update-21-2-0/update-module-resolution.d.ts +2 -0
- package/src/migrations/update-21-2-0/update-module-resolution.js +45 -0
- package/src/plugins/plugin.js +22 -13
- package/src/utils/backward-compatible-versions.d.ts +2 -2
- package/src/utils/backward-compatible-versions.js +22 -19
- package/src/utils/nx-devkit/ast-utils.js +17 -3
- package/src/utils/nx-devkit/testing.js +9 -9
- package/src/utils/targets.d.ts +2 -1
- package/src/utils/targets.js +6 -0
- package/src/utils/versions.d.ts +4 -3
- package/src/utils/versions.js +5 -4
- package/mf/mf.d.ts +0 -69
- package/src/generators/application/files/base-pre18/src/favicon.ico +0 -0
- package/src/generators/application/files/ng-module/src/app/app.component.spec.ts__tpl__ +0 -29
- package/src/generators/application/files/ng-module/src/app/app.module.ts__tpl__ +0 -17
- package/src/generators/application/files/standalone-components/src/app/app.component.__style__ +0 -0
- package/src/generators/application/files/standalone-components/src/app/app.component.spec.ts__tpl__ +0 -28
- package/src/generators/application/lib/set-app-strict-default.d.ts +0 -2
- package/src/generators/application/lib/set-app-strict-default.js +0 -13
- package/src/generators/application/lib/update-editor-tsconfig.js +0 -21
- package/src/generators/library/lib/enable-strict-type-checking.d.ts +0 -7
- package/src/generators/library/lib/enable-strict-type-checking.js +0 -47
- package/src/generators/library/lib/update-tsconfig.d.ts +0 -3
- package/src/generators/library/lib/update-tsconfig.js +0 -36
- package/src/generators/setup-mf/files/host-files/app.component.spec.ts__tmpl__ +0 -47
- /package/src/generators/application/files/{base-18+ → base}/public/favicon.ico +0 -0
- /package/src/generators/application/files/{base-pre18/src/assets/.gitkeep__tpl__ → ng-module/src/app/app__componentFileSuffix__.__style__} +0 -0
- /package/src/generators/application/files/ng-module/src/app/{app.component.html__tpl__ → app__componentFileSuffix__.html__tpl__} +0 -0
- /package/src/generators/application/files/{ng-module/src/app/app.component.__style__ → standalone-components/src/app/app__componentFileSuffix__.__style__} +0 -0
- /package/src/generators/application/files/standalone-components/src/app/{app.component.html__tpl__ → app__componentFileSuffix__.html__tpl__} +0 -0
- /package/src/generators/component/files/{__fileName__.html__tpl__ → __fileName____ngext__.html__tpl__} +0 -0
- /package/src/generators/library/files/ng-module/src/lib/{__libFileName__.module.ts__tpl__ → __libFileName____moduleTypeSeparator__module.ts__tpl__} +0 -0
- /package/src/generators/library-secondary-entry-point/files/src/lib/{__fileName__.module.ts__tmpl__ → __fileName____moduleTypeSeparator__module.ts__tmpl__} +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/ngmodule-src/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/ngmodule-src/app/__rootModuleFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/server/__serverFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/standalone-src/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/standalone-src/app/app.config.server.ts__tpl__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder-common-engine/server/__serverFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/ngmodule-src/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/ngmodule-src/app/__rootModuleFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/root/tsconfig.server.json.template +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/server/__serverFileName__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/standalone-src/__main__ +0 -0
- /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/standalone-src/app/app.config.server.ts.template +0 -0
@@ -0,0 +1,7 @@
|
|
1
|
+
import { bootstrapApplication } from '@angular/platform-browser';
|
2
|
+
import { <%= appSymbolName %> } from './app/<%= appFileName %>';
|
3
|
+
import { config } from './app/app.config.server';
|
4
|
+
|
5
|
+
const bootstrap = () => bootstrapApplication(<%= appSymbolName %>, config);
|
6
|
+
|
7
|
+
export default bootstrap;
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
|
2
|
+
import { provideServerRendering, withRoutes } from '@angular/ssr';
|
3
|
+
import { appConfig } from './app.config';
|
4
|
+
import { serverRoutes } from './app.routes.server';
|
5
|
+
|
6
|
+
const serverConfig: ApplicationConfig = {
|
7
|
+
providers: [
|
8
|
+
provideServerRendering(withRoutes(serverRoutes))
|
9
|
+
]
|
10
|
+
};
|
11
|
+
|
12
|
+
export const config = mergeApplicationConfig(appConfig, serverConfig);
|
@@ -0,0 +1 @@
|
|
1
|
+
export { <%= rootModuleClassName %> as default } from './app/<%= rootModuleFileName.slice(0, -3) %>';
|
package/src/generators/setup-ssr/files/v20+/server-builder/ngmodule-src/app/__rootModuleFileName__
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
import { NgModule } from '@angular/core';
|
2
|
+
import { ServerModule } from '@angular/platform-server';
|
3
|
+
|
4
|
+
import { AppModule } from './app<%= moduleTypeSeparator %>module';
|
5
|
+
import { <%= appSymbolName %> } from './<%= appFileName %>';
|
6
|
+
|
7
|
+
@NgModule({
|
8
|
+
imports: [
|
9
|
+
AppModule,
|
10
|
+
ServerModule,
|
11
|
+
],
|
12
|
+
bootstrap: [<%= appSymbolName %>],
|
13
|
+
})
|
14
|
+
export class <%= rootModuleClassName %> {}
|
@@ -0,0 +1,18 @@
|
|
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
|
+
"module": "commonjs",
|
8
|
+
"moduleResolution": "node10",
|
9
|
+
"types": [
|
10
|
+
"node"<% if (hasLocalizePackage) { %>,
|
11
|
+
"@angular/localize"<% } %>
|
12
|
+
]
|
13
|
+
},
|
14
|
+
"files": [
|
15
|
+
"src/<%= main %>",
|
16
|
+
"src/server.ts"
|
17
|
+
]
|
18
|
+
}
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import 'zone.js/node';
|
2
|
+
|
3
|
+
import { APP_BASE_HREF } from '@angular/common';
|
4
|
+
import { CommonEngine } from '@angular/ssr/node';
|
5
|
+
import * as express from 'express';
|
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
|
+
|
10
|
+
// The Express app is exported so that it can be used by serverless Functions.
|
11
|
+
export function app(): express.Express {
|
12
|
+
const server = express();
|
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');
|
17
|
+
|
18
|
+
const commonEngine = new CommonEngine();
|
19
|
+
|
20
|
+
server.set('view engine', 'html');
|
21
|
+
server.set('views', distFolder);
|
22
|
+
|
23
|
+
// Example Express Rest API endpoints
|
24
|
+
// server.get('/api/**', (req, res) => { });
|
25
|
+
// Serve static files from /browser
|
26
|
+
server.get('*.*', express.static(distFolder, {
|
27
|
+
maxAge: '1y'
|
28
|
+
}));
|
29
|
+
|
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));
|
44
|
+
});
|
45
|
+
|
46
|
+
return server;
|
47
|
+
}
|
48
|
+
|
49
|
+
function run(): void {
|
50
|
+
const port = process.env['PORT'] || <%= serverPort %>;
|
51
|
+
|
52
|
+
// Start up the Node server
|
53
|
+
const server = app();
|
54
|
+
server.listen(port, () => {
|
55
|
+
console.log(`Node Express server listening on http://localhost:${port}`);
|
56
|
+
});
|
57
|
+
}
|
58
|
+
|
59
|
+
// Webpack will replace 'require' with '__webpack_require__'
|
60
|
+
// '__non_webpack_require__' is a proxy to Node 'require'
|
61
|
+
// The below code is to ensure that the server is run only when not requiring the bundle.
|
62
|
+
declare const __non_webpack_require__: NodeRequire;
|
63
|
+
const mainModule = __non_webpack_require__.main;
|
64
|
+
const moduleFilename = mainModule && mainModule.filename || '';
|
65
|
+
if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
|
66
|
+
run();
|
67
|
+
}
|
68
|
+
|
69
|
+
export default <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><% } %>;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { bootstrapApplication } from '@angular/platform-browser';
|
2
|
+
import { <%= appSymbolName %> } from './app/<%= appFileName %>';
|
3
|
+
import { config } from './app/app.config.server';
|
4
|
+
|
5
|
+
const bootstrap = () => bootstrapApplication(<%= appSymbolName %>, config);
|
6
|
+
|
7
|
+
export default bootstrap;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
|
2
|
+
import { provideServerRendering } from '@angular/ssr';
|
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);
|
@@ -2,24 +2,27 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.addDependencies = addDependencies;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
-
const semver_1 = require("semver");
|
6
5
|
const version_utils_1 = require("../../utils/version-utils");
|
7
6
|
function addDependencies(tree, isUsingApplicationBuilder) {
|
8
7
|
const pkgVersions = (0, version_utils_1.versions)(tree);
|
9
|
-
const { version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
10
8
|
const dependencies = {
|
11
|
-
'@angular/platform-server': (0, version_utils_1.
|
12
|
-
|
9
|
+
'@angular/platform-server': (0, version_utils_1.getInstalledPackageVersion)(tree, '@angular/platform-server') ??
|
10
|
+
pkgVersions.angularVersion,
|
13
11
|
express: pkgVersions.expressVersion,
|
14
12
|
};
|
15
13
|
const devDependencies = {
|
16
14
|
'@types/express': pkgVersions.typesExpressVersion,
|
17
15
|
};
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
if (!isUsingApplicationBuilder && (0, semver_1.gte)(angularVersion, '17.1.0')) {
|
16
|
+
const angularDevkitVersion = (0, version_utils_1.getInstalledAngularDevkitVersion)(tree) ?? pkgVersions.angularDevkitVersion;
|
17
|
+
dependencies['@angular/ssr'] = angularDevkitVersion;
|
18
|
+
if (!isUsingApplicationBuilder) {
|
22
19
|
devDependencies['browser-sync'] = pkgVersions.browserSyncVersion;
|
23
20
|
}
|
21
|
+
else {
|
22
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
23
|
+
if (angularMajorVersion >= 20) {
|
24
|
+
dependencies['@angular-devkit/build-angular'] = angularDevkitVersion;
|
25
|
+
}
|
26
|
+
}
|
24
27
|
(0, devkit_1.addDependenciesToPackageJson)(tree, dependencies, devDependencies);
|
25
28
|
}
|
@@ -14,9 +14,16 @@ function addHydration(tree, options) {
|
|
14
14
|
tsModule = (0, ensure_typescript_1.ensureTypescript)();
|
15
15
|
tsquery = require('@phenomnomnominal/tsquery').tsquery;
|
16
16
|
}
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
let pathToClientConfigFile;
|
18
|
+
if (options.standalone) {
|
19
|
+
pathToClientConfigFile = (0, devkit_1.joinPathFragments)(projectConfig.sourceRoot, 'app/app.config.ts');
|
20
|
+
}
|
21
|
+
else {
|
22
|
+
pathToClientConfigFile = (0, devkit_1.joinPathFragments)(projectConfig.sourceRoot, 'app/app.module.ts');
|
23
|
+
if (!tree.exists(pathToClientConfigFile)) {
|
24
|
+
pathToClientConfigFile = (0, devkit_1.joinPathFragments)(projectConfig.sourceRoot, 'app/app-module.ts');
|
25
|
+
}
|
26
|
+
}
|
20
27
|
const sourceText = tree.read(pathToClientConfigFile, 'utf-8');
|
21
28
|
let sourceFile = tsModule.createSourceFile(pathToClientConfigFile, sourceText, tsModule.ScriptTarget.Latest, true);
|
22
29
|
const provideClientHydrationCallExpression = tsquery(sourceFile, 'ObjectLiteralExpression PropertyAssignment:has(Identifier[name=providers]) ArrayLiteralExpression CallExpression:has(Identifier[name=provideClientHydration])')[0];
|
@@ -14,8 +14,13 @@ function addServerFile(tree, options) {
|
|
14
14
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
15
15
|
const baseFilesPath = (0, path_1.join)(__dirname, '..', 'files');
|
16
16
|
let pathToFiles;
|
17
|
-
if (angularMajorVersion >=
|
18
|
-
pathToFiles = (0, path_1.join)(baseFilesPath, '
|
17
|
+
if (angularMajorVersion >= 20) {
|
18
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'v20+', options.isUsingApplicationBuilder
|
19
|
+
? 'application-builder'
|
20
|
+
: 'server-builder', 'server');
|
21
|
+
}
|
22
|
+
else if (angularMajorVersion === 19) {
|
23
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'v19', options.isUsingApplicationBuilder
|
19
24
|
? 'application-builder' +
|
20
25
|
(options.serverRouting ? '' : '-common-engine')
|
21
26
|
: 'server-builder', 'server');
|
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateSSRFiles = generateSSRFiles;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const path_1 = require("path");
|
6
|
-
const version_utils_1 = require("../../utils/version-utils");
|
7
6
|
const semver_1 = require("semver");
|
7
|
+
const app_components_info_1 = require("../../utils/app-components-info");
|
8
|
+
const artifact_types_1 = require("../../utils/artifact-types");
|
9
|
+
const version_utils_1 = require("../../utils/version-utils");
|
8
10
|
function generateSSRFiles(tree, options) {
|
9
11
|
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
10
12
|
if (project.targets.server ||
|
@@ -16,8 +18,13 @@ function generateSSRFiles(tree, options) {
|
|
16
18
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
17
19
|
const baseFilesPath = (0, path_1.join)(__dirname, '..', 'files');
|
18
20
|
let pathToFiles;
|
19
|
-
if (angularMajorVersion >=
|
20
|
-
pathToFiles = (0, path_1.join)(baseFilesPath, '
|
21
|
+
if (angularMajorVersion >= 20) {
|
22
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'v20+', options.isUsingApplicationBuilder
|
23
|
+
? 'application-builder'
|
24
|
+
: 'server-builder', options.standalone ? 'standalone-src' : 'ngmodule-src');
|
25
|
+
}
|
26
|
+
else if (angularMajorVersion === 19) {
|
27
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'v19', options.isUsingApplicationBuilder
|
21
28
|
? 'application-builder'
|
22
29
|
: 'server-builder', options.standalone ? 'standalone-src' : 'ngmodule-src');
|
23
30
|
}
|
@@ -29,14 +36,20 @@ function generateSSRFiles(tree, options) {
|
|
29
36
|
const cleanedSsrVersion = ssrVersion
|
30
37
|
? (0, semver_1.clean)(ssrVersion) ?? (0, semver_1.coerce)(ssrVersion).version
|
31
38
|
: null;
|
39
|
+
const componentType = (0, artifact_types_1.getComponentType)(tree);
|
40
|
+
const appComponentInfo = (0, app_components_info_1.getAppComponentInfo)(tree, componentType ? `.${componentType}` : '', project);
|
41
|
+
const moduleTypeSeparator = (0, artifact_types_1.getModuleTypeSeparator)(tree);
|
32
42
|
(0, devkit_1.generateFiles)(tree, pathToFiles, sourceRoot, {
|
33
43
|
...options,
|
34
44
|
provideServerRoutingFn: !cleanedSsrVersion || (0, semver_1.gte)(cleanedSsrVersion, '19.2.0')
|
35
45
|
? 'provideServerRouting'
|
36
46
|
: 'provideServerRoutesConfig',
|
47
|
+
appFileName: appComponentInfo.extensionlessFileName,
|
48
|
+
appSymbolName: appComponentInfo.symbolName,
|
49
|
+
moduleTypeSeparator,
|
37
50
|
tpl: '',
|
38
51
|
});
|
39
|
-
if (angularMajorVersion
|
52
|
+
if (angularMajorVersion === 19 && !options.serverRouting) {
|
40
53
|
tree.delete((0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.routes.server.ts'));
|
41
54
|
}
|
42
55
|
}
|
@@ -9,6 +9,14 @@ function setServerTsConfigOptionsForApplicationBuilder(tree, options) {
|
|
9
9
|
const { targets } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
10
10
|
const tsConfigPath = targets.build.options.tsConfig;
|
11
11
|
(0, devkit_1.updateJson)(tree, tsConfigPath, (json) => {
|
12
|
+
json.compilerOptions ??= {};
|
13
|
+
const types = new Set(json.compilerOptions.types ?? []);
|
14
|
+
types.add('node');
|
15
|
+
json.compilerOptions.types = Array.from(types);
|
16
|
+
if (json.include?.includes('src/**/*.ts')) {
|
17
|
+
// server file is already included, no need to add it
|
18
|
+
return json;
|
19
|
+
}
|
12
20
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
13
21
|
const files = new Set(json.files ?? []);
|
14
22
|
files.add((0, devkit_1.joinPathFragments)('src', options.main));
|
@@ -19,10 +27,6 @@ function setServerTsConfigOptionsForApplicationBuilder(tree, options) {
|
|
19
27
|
files.add((0, devkit_1.joinPathFragments)(options.serverFileName));
|
20
28
|
}
|
21
29
|
json.files = Array.from(files);
|
22
|
-
json.compilerOptions ??= {};
|
23
|
-
const types = new Set(json.compilerOptions.types ?? []);
|
24
|
-
types.add('node');
|
25
|
-
json.compilerOptions.types = Array.from(types);
|
26
30
|
return json;
|
27
31
|
});
|
28
32
|
}
|
@@ -34,8 +38,11 @@ function generateTsConfigServerJsonForBrowserBuilder(tree, options) {
|
|
34
38
|
!!packageJson.devDependencies?.['@angular/localize'];
|
35
39
|
const baseFilesPath = (0, path_1.join)(__dirname, '..', 'files');
|
36
40
|
let pathToFiles;
|
37
|
-
if (angularMajorVersion >=
|
38
|
-
pathToFiles = (0, path_1.join)(baseFilesPath, '
|
41
|
+
if (angularMajorVersion >= 20) {
|
42
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'v20+', 'server-builder', 'root');
|
43
|
+
}
|
44
|
+
else if (angularMajorVersion === 19) {
|
45
|
+
pathToFiles = (0, path_1.join)(baseFilesPath, 'v19', 'server-builder', 'root');
|
39
46
|
}
|
40
47
|
else {
|
41
48
|
pathToFiles = (0, path_1.join)(baseFilesPath, 'pre-v19', 'root');
|
@@ -46,4 +53,23 @@ function generateTsConfigServerJsonForBrowserBuilder(tree, options) {
|
|
46
53
|
hasLocalizePackage,
|
47
54
|
tpl: '',
|
48
55
|
});
|
56
|
+
(0, devkit_1.updateJson)(tree, (0, devkit_1.joinPathFragments)(project.root, 'tsconfig.json'), (json) => {
|
57
|
+
json.references ??= [];
|
58
|
+
json.references.push({
|
59
|
+
path: (0, devkit_1.joinPathFragments)(project.root, 'tsconfig.server.json'),
|
60
|
+
});
|
61
|
+
return json;
|
62
|
+
});
|
63
|
+
if (angularMajorVersion >= 20) {
|
64
|
+
(0, devkit_1.updateJson)(tree, options.buildTargetTsConfigPath, (json) => {
|
65
|
+
const exclude = new Set(json.exclude ?? []);
|
66
|
+
exclude.add(`src/${options.main}`);
|
67
|
+
exclude.add(`src/${options.serverFileName}`);
|
68
|
+
if (options.standalone) {
|
69
|
+
exclude.add('src/app/app.config.server.ts');
|
70
|
+
}
|
71
|
+
json.exclude = Array.from(exclude);
|
72
|
+
return json;
|
73
|
+
});
|
74
|
+
}
|
49
75
|
}
|
@@ -6,13 +6,13 @@ const prompt_1 = require("@nx/devkit/src/generators/prompt");
|
|
6
6
|
const ast_utils_1 = require("../../../utils/nx-devkit/ast-utils");
|
7
7
|
const version_utils_1 = require("../../utils/version-utils");
|
8
8
|
async function normalizeOptions(tree, options) {
|
9
|
-
const { targets } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
9
|
+
const { targets, root } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
10
10
|
const isUsingApplicationBuilder = targets.build.executor === '@angular-devkit/build-angular:application' ||
|
11
11
|
targets.build.executor === '@angular/build:application' ||
|
12
12
|
targets.build.executor === '@nx/angular:application';
|
13
13
|
if (options.serverRouting === undefined && isUsingApplicationBuilder) {
|
14
14
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
15
|
-
if (angularMajorVersion
|
15
|
+
if (angularMajorVersion === 19) {
|
16
16
|
options.serverRouting = await (0, prompt_1.promptWhenInteractive)({
|
17
17
|
type: 'confirm',
|
18
18
|
name: 'serverRouting',
|
@@ -21,7 +21,7 @@ async function normalizeOptions(tree, options) {
|
|
21
21
|
}, { serverRouting: false }).then(({ serverRouting }) => serverRouting);
|
22
22
|
}
|
23
23
|
else {
|
24
|
-
options.serverRouting =
|
24
|
+
options.serverRouting = angularMajorVersion >= 20;
|
25
25
|
}
|
26
26
|
}
|
27
27
|
else if (options.serverRouting !== undefined &&
|
@@ -42,5 +42,7 @@ async function normalizeOptions(tree, options) {
|
|
42
42
|
hydration: options.hydration ?? true,
|
43
43
|
serverRouting: options.serverRouting,
|
44
44
|
isUsingApplicationBuilder,
|
45
|
+
buildTargetTsConfigPath: targets.build.options?.tsConfig ??
|
46
|
+
(0, devkit_1.joinPathFragments)(root, 'tsconfig.app.json'),
|
45
47
|
};
|
46
48
|
}
|
@@ -21,6 +21,11 @@ function updateProjectConfigForApplicationBuilder(tree, options) {
|
|
21
21
|
}
|
22
22
|
else {
|
23
23
|
outputPath = outputPath.base;
|
24
|
+
if (buildTarget.outputs && buildTarget.outputs.length > 0) {
|
25
|
+
buildTarget.outputs = buildTarget.outputs.map((output) => output === '{options.outputPath.base}'
|
26
|
+
? '{options.outputPath}'
|
27
|
+
: output);
|
28
|
+
}
|
24
29
|
}
|
25
30
|
}
|
26
31
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
@@ -8,8 +8,8 @@ function validateOptions(tree, options) {
|
|
8
8
|
validateProject(tree, options.project);
|
9
9
|
validateBuildTarget(tree, options.project);
|
10
10
|
const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
11
|
-
if (angularMajorVersion
|
12
|
-
throw new Error(`The "serverRouting" option is only supported in Angular versions
|
11
|
+
if (angularMajorVersion !== 19 && options.serverRouting !== undefined) {
|
12
|
+
throw new Error(`The "serverRouting" option is only supported in Angular versions 19.x.x. You are using Angular ${angularVersion}.`);
|
13
13
|
}
|
14
14
|
}
|
15
15
|
function validateProject(tree, project) {
|
@@ -53,7 +53,7 @@
|
|
53
53
|
"default": true
|
54
54
|
},
|
55
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
|
56
|
+
"description": "Creates a server application using the Server Routing and App Engine APIs for application using the `application` builder (Developer Preview). _Note: this is only supported in Angular versions 19.x.x_. From Angular 20 onwards, SSR will always enable server routing when using the `application` builder.",
|
57
57
|
"type": "boolean"
|
58
58
|
},
|
59
59
|
"skipFormat": {
|
@@ -3,10 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.addJest = addJest;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const versions_1 = require("../../utils/versions");
|
6
|
+
const version_utils_1 = require("./version-utils");
|
6
7
|
async function addJest(tree, options) {
|
7
8
|
if (!options.skipPackageJson) {
|
8
9
|
process.env.npm_config_legacy_peer_deps ??= 'true';
|
9
|
-
(0,
|
10
|
+
const pkgVersions = (0, version_utils_1.versions)(tree);
|
11
|
+
(0, devkit_1.addDependenciesToPackageJson)(tree, {
|
12
|
+
// TODO(leo): jest-preset-angular still needs this until https://github.com/thymikee/jest-preset-angular/pull/3079 is merged
|
13
|
+
'@angular/platform-browser-dynamic': pkgVersions.angularVersion,
|
14
|
+
}, { 'jest-preset-angular': pkgVersions.jestPresetAngularVersion }, undefined, true);
|
10
15
|
}
|
11
16
|
const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/jest', versions_1.nxVersion);
|
12
17
|
await configurationGenerator(tree, {
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { type ProjectConfiguration, type Tree } from '@nx/devkit';
|
2
|
+
export type ComponentMetadata = {
|
3
|
+
fileName: string;
|
4
|
+
extensionlessFileName: string;
|
5
|
+
path: string;
|
6
|
+
symbolName: string;
|
7
|
+
};
|
8
|
+
export declare function getAppComponentInfo(tree: Tree, componentFileSuffix: string, project: ProjectConfiguration): ComponentMetadata;
|
9
|
+
export declare function getNxWelcomeComponentInfo(tree: Tree, componentFileSuffix: string, project: ProjectConfiguration): ComponentMetadata;
|
@@ -0,0 +1,39 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getAppComponentInfo = getAppComponentInfo;
|
4
|
+
exports.getNxWelcomeComponentInfo = getNxWelcomeComponentInfo;
|
5
|
+
const devkit_1 = require("@nx/devkit");
|
6
|
+
const node_path_1 = require("node:path");
|
7
|
+
const version_utils_1 = require("./version-utils");
|
8
|
+
function getAppComponentInfo(tree, componentFileSuffix, project) {
|
9
|
+
return getComponentInfo(tree, 'app', componentFileSuffix, project);
|
10
|
+
}
|
11
|
+
function getNxWelcomeComponentInfo(tree, componentFileSuffix, project) {
|
12
|
+
return getComponentInfo(tree, 'nx-welcome', componentFileSuffix, project);
|
13
|
+
}
|
14
|
+
// TODO(leo): follow this up and improve it by using static analysis
|
15
|
+
function getComponentInfo(tree, component, componentFileSuffix, project) {
|
16
|
+
let componentPath = (0, devkit_1.joinPathFragments)(project.sourceRoot, `app/${component}.component.ts`);
|
17
|
+
if (!tree.exists(componentPath)) {
|
18
|
+
componentPath = (0, devkit_1.joinPathFragments)(project.sourceRoot, `app/${component}.ts`);
|
19
|
+
}
|
20
|
+
if (!tree.exists(componentPath)) {
|
21
|
+
if (componentFileSuffix) {
|
22
|
+
componentPath = (0, devkit_1.joinPathFragments)(project.sourceRoot, `app/${component}${componentFileSuffix}.ts`);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
if (!tree.exists(componentPath)) {
|
26
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
27
|
+
componentPath = (0, devkit_1.joinPathFragments)(project.sourceRoot, angularMajorVersion >= 20
|
28
|
+
? `app/${component}.ts`
|
29
|
+
: `app/${component}.component.ts`);
|
30
|
+
}
|
31
|
+
const fileName = (0, node_path_1.basename)(componentPath);
|
32
|
+
const extensionlessFileName = fileName.slice(0, -3);
|
33
|
+
return {
|
34
|
+
fileName,
|
35
|
+
extensionlessFileName,
|
36
|
+
path: componentPath,
|
37
|
+
symbolName: (0, devkit_1.names)(extensionlessFileName).className,
|
38
|
+
};
|
39
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getComponentType = getComponentType;
|
4
|
+
exports.getModuleTypeSeparator = getModuleTypeSeparator;
|
5
|
+
const devkit_1 = require("@nx/devkit");
|
6
|
+
const version_utils_1 = require("./version-utils");
|
7
|
+
function getComponentType(tree) {
|
8
|
+
const nxJson = (0, devkit_1.readNxJson)(tree);
|
9
|
+
let componentType = nxJson.generators?.['@nx/angular:component']?.type ??
|
10
|
+
nxJson.generators?.['@nx/angular']?.component?.type;
|
11
|
+
if (!componentType) {
|
12
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
13
|
+
if (angularMajorVersion < 20) {
|
14
|
+
componentType = 'component';
|
15
|
+
}
|
16
|
+
}
|
17
|
+
return componentType;
|
18
|
+
}
|
19
|
+
function getModuleTypeSeparator(tree) {
|
20
|
+
const nxJson = (0, devkit_1.readNxJson)(tree);
|
21
|
+
// We don't have a "module" generator but the @nx/angular collection extends
|
22
|
+
// from the @schematics/angular collection so the "module" generator is
|
23
|
+
// available there. We check for a generator default for each collection.
|
24
|
+
let typeSeparator = nxJson.generators?.['@nx/angular:module']?.typeSeparator ??
|
25
|
+
nxJson.generators?.['@nx/angular']?.module?.typeSeparator ??
|
26
|
+
nxJson.generators?.['@schematics/angular:module']?.typeSeparator ??
|
27
|
+
nxJson.generators?.['@schematics/angular']?.module?.typeSeparator;
|
28
|
+
if (!typeSeparator) {
|
29
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
30
|
+
typeSeparator = angularMajorVersion >= 20 ? '-' : '.';
|
31
|
+
}
|
32
|
+
return typeSeparator;
|
33
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function assertRspackIsCSR(bundler: 'webpack' | 'rspack', ssr: boolean, serverRouting: boolean): void;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.assertRspackIsCSR = assertRspackIsCSR;
|
4
|
+
function assertRspackIsCSR(bundler, ssr, serverRouting) {
|
5
|
+
if (bundler === 'rspack' && serverRouting) {
|
6
|
+
throw new Error('Server Routing is not currently supported for Angular Rspack Module Federation. Please use webpack instead.');
|
7
|
+
}
|
8
|
+
if (bundler === 'rspack' && ssr) {
|
9
|
+
throw new Error('SSR is not currently supported for Angular Rspack Module Federation. Please use webpack instead.');
|
10
|
+
}
|
11
|
+
}
|
@@ -24,13 +24,12 @@ function ensureAngularDependencies(tree) {
|
|
24
24
|
dependencies['@angular/core'] = angularVersion;
|
25
25
|
dependencies['@angular/forms'] = angularVersion;
|
26
26
|
dependencies['@angular/platform-browser'] = angularVersion;
|
27
|
-
dependencies['@angular/platform-browser-dynamic'] = angularVersion;
|
28
27
|
dependencies['@angular/router'] = angularVersion;
|
29
28
|
dependencies.rxjs = rxjsVersion;
|
30
29
|
dependencies.tslib = tsLibVersion;
|
31
30
|
dependencies['zone.js'] = zoneJsVersion;
|
32
31
|
}
|
33
|
-
const installedAngularDevkitVersion = (0, version_utils_1.
|
32
|
+
const installedAngularDevkitVersion = (0, version_utils_1.getInstalledAngularDevkitVersion)(tree);
|
34
33
|
if (!installedAngularDevkitVersion) {
|
35
34
|
/**
|
36
35
|
* If `@angular-devkit/build-angular` is already installed, we assume the workspace
|
@@ -43,8 +42,12 @@ function ensureAngularDependencies(tree) {
|
|
43
42
|
}
|
44
43
|
// Ensure the `@nx/angular` peer dependencies are always installed.
|
45
44
|
const angularDevkitVersion = installedAngularDevkitVersion ?? pkgVersions.angularDevkitVersion;
|
46
|
-
devDependencies['@angular-devkit/build-angular'] = angularDevkitVersion;
|
47
45
|
devDependencies['@angular-devkit/schematics'] = angularDevkitVersion;
|
48
46
|
devDependencies['@schematics/angular'] = angularDevkitVersion;
|
47
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
48
|
+
if (angularMajorVersion < 20) {
|
49
|
+
devDependencies['@angular/build'] = angularDevkitVersion;
|
50
|
+
devDependencies['@angular-devkit/build-angular'] = angularDevkitVersion;
|
51
|
+
}
|
49
52
|
return (0, devkit_1.addDependenciesToPackageJson)(tree, dependencies, devDependencies, undefined, true);
|
50
53
|
}
|
@@ -27,8 +27,7 @@ function exportScam(tree, options) {
|
|
27
27
|
let updatedEntryPointContent = (0, devkit_1.stripIndents) `${entryPointContent}
|
28
28
|
export * from '${relativePathFromEntryPoint}';`;
|
29
29
|
if (!options.inlineScam) {
|
30
|
-
const
|
31
|
-
const relativePathFromModule = (0, path_1.getRelativeImportToFile)(entryPointPath, moduleFilePath);
|
30
|
+
const relativePathFromModule = (0, path_1.getRelativeImportToFile)(entryPointPath, options.modulePath);
|
32
31
|
updatedEntryPointContent = (0, devkit_1.stripIndents) `${updatedEntryPointContent}
|
33
32
|
export * from '${relativePathFromModule}';`;
|
34
33
|
}
|