@nx/angular 21.1.2 → 21.2.0-beta.1
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 +3 -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 +22 -6
- 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__ +5 -6
- 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 +76 -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.js +2 -6
- 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 +85 -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
@@ -3,28 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.libraryGenerator = libraryGenerator;
|
4
4
|
const tslib_1 = require("tslib");
|
5
5
|
const devkit_1 = require("@nx/devkit");
|
6
|
+
const log_show_project_command_1 = require("@nx/devkit/src/utils/log-show-project-command");
|
6
7
|
const js_1 = require("@nx/js");
|
8
|
+
const add_release_config_1 = require("@nx/js/src/generators/library/utils/add-release-config");
|
9
|
+
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
7
10
|
const init_1 = tslib_1.__importDefault(require("../../generators/init/init"));
|
11
|
+
const test_runners_1 = require("../../utils/test-runners");
|
8
12
|
const add_linting_1 = tslib_1.__importDefault(require("../add-linting/add-linting"));
|
9
13
|
const setup_tailwind_1 = tslib_1.__importDefault(require("../setup-tailwind/setup-tailwind"));
|
10
|
-
const
|
14
|
+
const add_jest_1 = require("../utils/add-jest");
|
15
|
+
const add_vitest_1 = require("../utils/add-vitest");
|
11
16
|
const dependencies_1 = require("../utils/dependencies");
|
17
|
+
const ensure_angular_dependencies_1 = require("../utils/ensure-angular-dependencies");
|
18
|
+
const version_utils_1 = require("../utils/version-utils");
|
12
19
|
const add_module_1 = require("./lib/add-module");
|
20
|
+
const add_project_1 = require("./lib/add-project");
|
13
21
|
const add_standalone_component_1 = require("./lib/add-standalone-component");
|
14
|
-
const enable_strict_type_checking_1 = require("./lib/enable-strict-type-checking");
|
15
|
-
const normalize_options_1 = require("./lib/normalize-options");
|
16
|
-
const update_lib_package_npm_scope_1 = require("./lib/update-lib-package-npm-scope");
|
17
|
-
const update_tsconfig_1 = require("./lib/update-tsconfig");
|
18
22
|
const create_files_1 = require("./lib/create-files");
|
19
|
-
const
|
20
|
-
const add_jest_1 = require("../utils/add-jest");
|
23
|
+
const normalize_options_1 = require("./lib/normalize-options");
|
21
24
|
const set_generator_defaults_1 = require("./lib/set-generator-defaults");
|
22
|
-
const
|
23
|
-
const
|
24
|
-
const test_runners_1 = require("../../utils/test-runners");
|
25
|
-
const add_vitest_1 = require("../utils/add-vitest");
|
26
|
-
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
27
|
-
const add_release_config_1 = require("@nx/js/src/generators/library/utils/add-release-config");
|
25
|
+
const update_lib_package_npm_scope_1 = require("./lib/update-lib-package-npm-scope");
|
26
|
+
const update_tsconfig_files_1 = require("./lib/update-tsconfig-files");
|
28
27
|
async function libraryGenerator(tree, schema) {
|
29
28
|
(0, ts_solution_setup_1.assertNotUsingTsSolutionSetup)(tree, 'angular', 'library');
|
30
29
|
// Do some validation checks
|
@@ -51,7 +50,7 @@ async function libraryGenerator(tree, schema) {
|
|
51
50
|
}
|
52
51
|
const project = await (0, add_project_1.addProject)(tree, libraryOptions);
|
53
52
|
(0, create_files_1.createFiles)(tree, options, project);
|
54
|
-
(0,
|
53
|
+
(0, update_tsconfig_files_1.updateTsConfigFiles)(tree, libraryOptions);
|
55
54
|
await addUnitTestRunner(tree, libraryOptions);
|
56
55
|
updateNpmScopeIfBuildableOrPublishable(tree, libraryOptions);
|
57
56
|
(0, set_generator_defaults_1.setGeneratorDefaults)(tree, options);
|
@@ -61,7 +60,6 @@ async function libraryGenerator(tree, schema) {
|
|
61
60
|
else {
|
62
61
|
await (0, add_standalone_component_1.addStandaloneComponent)(tree, options);
|
63
62
|
}
|
64
|
-
setStrictMode(tree, libraryOptions);
|
65
63
|
await addLinting(tree, libraryOptions);
|
66
64
|
if (libraryOptions.addTailwind) {
|
67
65
|
await (0, setup_tailwind_1.default)(tree, {
|
@@ -76,20 +74,16 @@ async function libraryGenerator(tree, schema) {
|
|
76
74
|
'ng-packagr': pkgVersions.ngPackagrVersion,
|
77
75
|
}, undefined, true);
|
78
76
|
(0, dependencies_1.addBuildableLibrariesPostCssDependencies)(tree);
|
79
|
-
if (libraryOptions.publishable) {
|
80
|
-
await (0, add_release_config_1.releaseTasks)(tree);
|
81
|
-
}
|
82
77
|
}
|
83
|
-
(0, js_1.addTsConfigPath)(tree, libraryOptions.importPath, [
|
84
|
-
(0, devkit_1.joinPathFragments)(libraryOptions.projectRoot, './src', 'index.ts'),
|
85
|
-
]);
|
86
78
|
if (!libraryOptions.skipFormat) {
|
87
79
|
await (0, devkit_1.formatFiles)(tree);
|
88
80
|
}
|
89
|
-
|
90
|
-
|
91
|
-
(0,
|
92
|
-
}
|
81
|
+
const tasks = [() => (0, devkit_1.installPackagesTask)(tree)];
|
82
|
+
if (libraryOptions.publishable) {
|
83
|
+
tasks.push(await (0, add_release_config_1.releaseTasks)(tree));
|
84
|
+
}
|
85
|
+
tasks.push(() => (0, log_show_project_command_1.logShowProjectCommand)(libraryOptions.name));
|
86
|
+
return (0, devkit_1.runTasksInSerial)(...tasks);
|
93
87
|
}
|
94
88
|
async function addUnitTestRunner(host, options) {
|
95
89
|
switch (options.unitTestRunner) {
|
@@ -116,14 +110,6 @@ function updateNpmScopeIfBuildableOrPublishable(host, options) {
|
|
116
110
|
(0, update_lib_package_npm_scope_1.updateLibPackageNpmScope)(host, options);
|
117
111
|
}
|
118
112
|
}
|
119
|
-
function setStrictMode(host, options) {
|
120
|
-
if (options.strict) {
|
121
|
-
(0, enable_strict_type_checking_1.enableStrictTypeChecking)(host, options);
|
122
|
-
}
|
123
|
-
else {
|
124
|
-
(0, enable_strict_type_checking_1.setLibraryStrictDefault)(host, options.strict);
|
125
|
-
}
|
126
|
-
}
|
127
113
|
async function addLinting(host, options) {
|
128
114
|
if (options.linter === 'none') {
|
129
115
|
return;
|
@@ -1 +1 @@
|
|
1
|
-
<% if (!skipModule) { %>export * from './lib/<%= fileName
|
1
|
+
<% if (!skipModule) { %>export * from './lib/<%= fileName %><%= moduleTypeSeparator %>module';<% } else { %>export const greeting = 'Hello World!';<% } %>
|
@@ -7,9 +7,10 @@ function addFiles(tree, options) {
|
|
7
7
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '..', 'files'), options.entryPointDestination, {
|
8
8
|
...options,
|
9
9
|
...nameVariants,
|
10
|
+
moduleTypeSeparator: options.moduleTypeSeparator,
|
10
11
|
tmpl: '',
|
11
12
|
});
|
12
13
|
if (options.skipModule) {
|
13
|
-
tree.delete((0, devkit_1.joinPathFragments)(options.entryPointDestination, `src/lib/${nameVariants.fileName}.module.ts`));
|
14
|
+
tree.delete((0, devkit_1.joinPathFragments)(options.entryPointDestination, `src/lib/${nameVariants.fileName}${options.moduleTypeSeparator}module.ts`));
|
14
15
|
}
|
15
16
|
}
|
@@ -1,3 +1,3 @@
|
|
1
|
-
import { Tree } from '@nx/devkit';
|
2
|
-
import { GeneratorOptions, NormalizedGeneratorOptions } from '../schema';
|
1
|
+
import { type Tree } from '@nx/devkit';
|
2
|
+
import type { GeneratorOptions, NormalizedGeneratorOptions } from '../schema';
|
3
3
|
export declare function normalizeOptions(tree: Tree, options: GeneratorOptions): NormalizedGeneratorOptions;
|
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.normalizeOptions = normalizeOptions;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
|
+
const artifact_types_1 = require("../../utils/artifact-types");
|
5
6
|
function normalizeOptions(tree, options) {
|
6
7
|
const name = (0, devkit_1.names)(options.name).fileName;
|
7
8
|
const projects = (0, devkit_1.getProjects)(tree);
|
@@ -18,6 +19,7 @@ function normalizeOptions(tree, options) {
|
|
18
19
|
}
|
19
20
|
const { name: mainEntryPoint } = (0, devkit_1.readJson)(tree, (0, devkit_1.joinPathFragments)(libraryProject.root, 'package.json'));
|
20
21
|
const secondaryEntryPoint = `${mainEntryPoint}/${options.name}`;
|
22
|
+
const moduleTypeSeparator = (0, artifact_types_1.getModuleTypeSeparator)(tree);
|
21
23
|
return {
|
22
24
|
...options,
|
23
25
|
entryPointDestination,
|
@@ -26,5 +28,6 @@ function normalizeOptions(tree, options) {
|
|
26
28
|
libraryProject,
|
27
29
|
secondaryEntryPoint,
|
28
30
|
skipModule: options.skipModule ?? false,
|
31
|
+
moduleTypeSeparator,
|
29
32
|
};
|
30
33
|
}
|
@@ -28,12 +28,19 @@ function updateModuleName(tree, { oldProjectName, newProjectName }) {
|
|
28
28
|
to: `${(0, devkit_1.names)(unscopedNewProjectName).className}Module`,
|
29
29
|
};
|
30
30
|
const findModuleName = new RegExp(`\\b${moduleName.from}`, 'g');
|
31
|
-
const
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
31
|
+
const moduleFiles = [
|
32
|
+
{
|
33
|
+
from: `${oldProjectName}.module`,
|
34
|
+
fromRegex: new RegExp(`\\b${oldProjectName}\\.module`, 'g'),
|
35
|
+
to: `${unscopedNewProjectName}.module`,
|
36
|
+
},
|
37
|
+
{
|
38
|
+
from: `${oldProjectName}-module`,
|
39
|
+
fromRegex: new RegExp(`\\b${oldProjectName}-module`, 'g'),
|
40
|
+
to: `${unscopedNewProjectName}-module`,
|
41
|
+
},
|
42
|
+
];
|
43
|
+
const filesToRename = moduleFiles.flatMap((moduleFile) => [
|
37
44
|
{
|
38
45
|
from: `${project.sourceRoot}/lib/${moduleFile.from}.ts`,
|
39
46
|
to: `${project.sourceRoot}/lib/${moduleFile.to}.ts`,
|
@@ -42,15 +49,15 @@ function updateModuleName(tree, { oldProjectName, newProjectName }) {
|
|
42
49
|
from: `${project.sourceRoot}/lib/${moduleFile.from}.spec.ts`,
|
43
50
|
to: `${project.sourceRoot}/lib/${moduleFile.to}.spec.ts`,
|
44
51
|
},
|
45
|
-
].filter((rename) => rename.from !== rename.to);
|
52
|
+
].filter((rename) => rename.from !== rename.to));
|
46
53
|
if (filesToRename.length === 0) {
|
47
54
|
return;
|
48
55
|
}
|
49
56
|
const replacements = [
|
50
|
-
{
|
51
|
-
regex:
|
57
|
+
...moduleFiles.map((moduleFile) => ({
|
58
|
+
regex: moduleFile.fromRegex,
|
52
59
|
replaceWith: moduleFile.to,
|
53
|
-
},
|
60
|
+
})),
|
54
61
|
{
|
55
62
|
regex: findModuleName,
|
56
63
|
replaceWith: moduleName.to,
|
@@ -8,9 +8,6 @@ const libraryExecutors = [
|
|
8
8
|
'@angular/build:ng-packagr',
|
9
9
|
'@nx/angular:ng-packagr-lite',
|
10
10
|
'@nx/angular:package',
|
11
|
-
// TODO(v17): remove when @nrwl/* scope is removed
|
12
|
-
'@nrwl/angular:ng-packagr-lite',
|
13
|
-
'@nrwl/angular:package',
|
14
11
|
];
|
15
12
|
function updateSecondaryEntryPoints(tree, schema) {
|
16
13
|
if (schema.oldProjectName === schema.newProjectName) {
|
@@ -7,7 +7,7 @@ const path_1 = require("path");
|
|
7
7
|
const builder_migrator_1 = require("./builder.migrator");
|
8
8
|
class AngularDevkitKarmaMigrator extends builder_migrator_1.BuilderMigrator {
|
9
9
|
constructor(tree, project, projectConfig, logger) {
|
10
|
-
super(tree, ['@angular-devkit/build-angular:karma'], 'karma', project, projectConfig, logger);
|
10
|
+
super(tree, ['@angular/build:karma', '@angular-devkit/build-angular:karma'], 'karma', project, projectConfig, logger);
|
11
11
|
}
|
12
12
|
migrate() {
|
13
13
|
if (this.skipMigration) {
|
@@ -11,6 +11,7 @@ const project_migrator_1 = require("./project.migrator");
|
|
11
11
|
const supportedTargets = {
|
12
12
|
build: {
|
13
13
|
builders: [
|
14
|
+
'@angular/build:application',
|
14
15
|
'@angular-devkit/build-angular:application',
|
15
16
|
'@angular-devkit/build-angular:browser',
|
16
17
|
'@angular-devkit/build-angular:browser-esbuild',
|
@@ -23,14 +24,24 @@ const supportedTargets = {
|
|
23
24
|
'@cypress/schematic:cypress',
|
24
25
|
],
|
25
26
|
},
|
26
|
-
i18n: {
|
27
|
+
i18n: {
|
28
|
+
builders: [
|
29
|
+
'@angular/build:extract-i18n',
|
30
|
+
'@angular-devkit/build-angular:extract-i18n',
|
31
|
+
],
|
32
|
+
},
|
27
33
|
prerender: {
|
28
34
|
builders: [
|
29
35
|
'@nguniversal/builders:prerender',
|
30
36
|
'@angular-devkit/build-angular:prerender',
|
31
37
|
],
|
32
38
|
},
|
33
|
-
serve: {
|
39
|
+
serve: {
|
40
|
+
builders: [
|
41
|
+
'@angular/build:dev-server',
|
42
|
+
'@angular-devkit/build-angular:dev-server',
|
43
|
+
],
|
44
|
+
},
|
34
45
|
server: { builders: ['@angular-devkit/build-angular:server'] },
|
35
46
|
serveSsr: {
|
36
47
|
builders: [
|
@@ -137,10 +148,34 @@ class AppMigrator extends project_migrator_1.ProjectMigrator {
|
|
137
148
|
this.updateTsConfigFileUsedByBuildTarget(rootTsConfigFile, projectOffsetFromRoot);
|
138
149
|
this.updateTsConfigFileUsedByServerTarget(projectOffsetFromRoot);
|
139
150
|
}
|
140
|
-
convertBuildOptions(buildOptions) {
|
141
|
-
|
142
|
-
|
143
|
-
|
151
|
+
convertBuildOptions(buildOptions, target, updateOutputs = true) {
|
152
|
+
const { executor } = target;
|
153
|
+
const isApplicationBuilder = executor === '@angular/build:application' ||
|
154
|
+
executor === '@angular-devkit/build-angular:application';
|
155
|
+
if (updateOutputs) {
|
156
|
+
if (buildOptions.outputPath) {
|
157
|
+
if (isApplicationBuilder) {
|
158
|
+
if (typeof buildOptions.outputPath === 'string') {
|
159
|
+
buildOptions.outputPath = (0, devkit_1.joinPathFragments)('dist', this.project.newRoot);
|
160
|
+
}
|
161
|
+
else if (buildOptions.outputPath.base) {
|
162
|
+
buildOptions.outputPath.base = (0, devkit_1.joinPathFragments)('dist', this.project.newRoot);
|
163
|
+
}
|
164
|
+
}
|
165
|
+
else {
|
166
|
+
buildOptions.outputPath = (0, devkit_1.joinPathFragments)('dist', this.project.newRoot, this.targetNames.server ? 'browser' : '');
|
167
|
+
}
|
168
|
+
}
|
169
|
+
else if (isApplicationBuilder) {
|
170
|
+
buildOptions.outputPath = (0, devkit_1.joinPathFragments)('dist', this.projectName);
|
171
|
+
}
|
172
|
+
if (typeof buildOptions.outputPath === 'string') {
|
173
|
+
target.outputs = ['{options.outputPath}'];
|
174
|
+
}
|
175
|
+
else if (buildOptions.outputPath?.base) {
|
176
|
+
target.outputs = ['{options.outputPath.base}'];
|
177
|
+
}
|
178
|
+
}
|
144
179
|
if (buildOptions.index) {
|
145
180
|
if (typeof buildOptions.index === 'string') {
|
146
181
|
buildOptions.index = this.convertAsset(buildOptions.index);
|
@@ -237,8 +272,8 @@ class AppMigrator extends project_migrator_1.ProjectMigrator {
|
|
237
272
|
this.logger.warn(`The tsConfig file "${buildDevTsConfig}" specified in the "${this.targetNames.build}" target could not be found. Skipping updating the tsConfig file.`);
|
238
273
|
}
|
239
274
|
}
|
240
|
-
this.convertBuildOptions(buildTarget.options ?? {});
|
241
|
-
Object.values(buildTarget.configurations ?? {}).forEach((config) => this.convertBuildOptions(config));
|
275
|
+
this.convertBuildOptions(buildTarget.options ?? {}, buildTarget);
|
276
|
+
Object.values(buildTarget.configurations ?? {}).forEach((config) => this.convertBuildOptions(config, buildTarget, false));
|
242
277
|
}
|
243
278
|
updatePrerenderTargetConfiguration() {
|
244
279
|
if (!this.targetNames.prerender ||
|
@@ -8,11 +8,11 @@
|
|
8
8
|
"type": "object",
|
9
9
|
"examples": [
|
10
10
|
{
|
11
|
-
"command": "nx g @nx/angular:ngrx --root --parent=apps/my-app/src/app/app
|
11
|
+
"command": "nx g @nx/angular:ngrx --root --parent=apps/my-app/src/app/app-module.ts --facade=false placeholder",
|
12
12
|
"description": "Add root ngrx configration to the `my-app` application"
|
13
13
|
},
|
14
14
|
{
|
15
|
-
"command": "nx g @nx/angular:ngrx --parent=libs/my-lib/src/lib/my-lib
|
15
|
+
"command": "nx g @nx/angular:ngrx --parent=libs/my-lib/src/lib/my-lib-module.ts --facade=true --root=false users",
|
16
16
|
"description": "Add a `users` state with a facade to the `my-lib` library. It will be tracked under the default `+state` folder in the lib"
|
17
17
|
},
|
18
18
|
{
|
@@ -42,7 +42,7 @@
|
|
42
42
|
},
|
43
43
|
"parent": {
|
44
44
|
"type": "string",
|
45
|
-
"description": "The path to the file where the state will be registered. For NgModule usage, this will be your `app
|
45
|
+
"description": "The path to the file where the state will be registered. For NgModule usage, this will be your `app-module.ts` for your root state, or your Feature Module for feature state. For Standalone API usage, this will be your `app.config.ts` file for your root state, or the Routes definition file for your feature state. The host directory will create/use the new state directory.",
|
46
46
|
"x-prompt": "What is the path to the module or Routes definition where this NgRx state should be registered?",
|
47
47
|
"x-priority": "important"
|
48
48
|
},
|
@@ -16,7 +16,11 @@ function normalizeOptions(tree, options) {
|
|
16
16
|
const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
|
17
17
|
const isStandalone = (0, ast_utils_1.isNgStandaloneApp)(tree, options.project);
|
18
18
|
const appConfigPath = (0, devkit_1.joinPathFragments)(project.sourceRoot, 'app/app.config.ts');
|
19
|
-
|
19
|
+
let appMainPath = project.targets.build.options.main ?? project.targets.build.options.browser;
|
20
|
+
if (!appMainPath) {
|
21
|
+
const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
|
22
|
+
appMainPath = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
|
23
|
+
}
|
20
24
|
/** If NgModule App
|
21
25
|
* -> Use App Module
|
22
26
|
* If Standalone
|
@@ -24,7 +28,10 @@ function normalizeOptions(tree, options) {
|
|
24
28
|
* --> If so, use that
|
25
29
|
* --> If not, use main.ts
|
26
30
|
*/
|
27
|
-
|
31
|
+
let ngModulePath = (0, devkit_1.joinPathFragments)(project.sourceRoot, 'app/app.module.ts');
|
32
|
+
if (!tree.exists(ngModulePath)) {
|
33
|
+
ngModulePath = (0, devkit_1.joinPathFragments)(project.sourceRoot, 'app/app-module.ts');
|
34
|
+
}
|
28
35
|
const parent = !isStandalone && tree.exists(ngModulePath)
|
29
36
|
? ngModulePath
|
30
37
|
: tree.exists(appConfigPath)
|
@@ -4,11 +4,15 @@ exports.normalizeOptions = normalizeOptions;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
|
6
6
|
const validations_1 = require("../../utils/validations");
|
7
|
+
const version_utils_1 = require("../../utils/version-utils");
|
7
8
|
async function normalizeOptions(tree, options) {
|
9
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
10
|
+
options.typeSeparator ??= angularMajorVersion < 20 ? '.' : '-';
|
8
11
|
const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
|
9
12
|
name: options.name,
|
10
13
|
path: options.path,
|
11
14
|
suffix: 'pipe',
|
15
|
+
suffixSeparator: options.typeSeparator,
|
12
16
|
allowedFileExtensions: ['ts'],
|
13
17
|
fileExtension: 'ts',
|
14
18
|
});
|
@@ -14,7 +14,7 @@ async function pipeGenerator(tree, rawOptions) {
|
|
14
14
|
fileName: options.fileName,
|
15
15
|
selector: pipeNames.propertyName,
|
16
16
|
standalone: options.standalone,
|
17
|
-
// Angular v19 or higher defaults to true, while
|
17
|
+
// Angular v19 or higher defaults to true, while lower versions default to false
|
18
18
|
setStandalone: (angularMajorVersion >= 19 && !options.standalone) ||
|
19
19
|
(angularMajorVersion < 19 && options.standalone),
|
20
20
|
tpl: '',
|
@@ -12,11 +12,15 @@
|
|
12
12
|
"command": "nx g @nx/angular:pipe mylib/src/lib/foo.pipe.ts"
|
13
13
|
},
|
14
14
|
{
|
15
|
-
"description": "Generate a pipe without providing the file extension. It results in the pipe `FooPipe` at `mylib/src/lib/foo
|
15
|
+
"description": "Generate a pipe without providing the file extension. It results in the pipe `FooPipe` at `mylib/src/lib/foo-pipe.ts`",
|
16
16
|
"command": "nx g @nx/angular:pipe mylib/src/lib/foo"
|
17
17
|
},
|
18
18
|
{
|
19
|
-
"description": "Generate a pipe with
|
19
|
+
"description": "Generate a pipe with a different type separator. It results in the pipe `FooPipe` at `mylib/src/lib/foo.pipe.ts`",
|
20
|
+
"command": "nx g @nx/angular:pipe mylib/src/lib/foo --typeSeparator=."
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"description": "Generate a pipe with the exported symbol different from the file name. It results in the pipe `CustomPipe` at `mylib/src/lib/foo-pipe.ts`",
|
20
24
|
"command": "nx g @nx/angular:pipe mylib/src/lib/foo --name=custom"
|
21
25
|
}
|
22
26
|
],
|
@@ -59,6 +63,11 @@
|
|
59
63
|
"default": false,
|
60
64
|
"description": "The declaring NgModule exports this pipe."
|
61
65
|
},
|
66
|
+
"typeSeparator": {
|
67
|
+
"type": "string",
|
68
|
+
"enum": ["-", "."],
|
69
|
+
"description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.pipe.ts`. It defaults to '-' for Angular v20+. For versions below v20, it defaults to '.'."
|
70
|
+
},
|
62
71
|
"skipFormat": {
|
63
72
|
"type": "boolean",
|
64
73
|
"default": false,
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import {bootstrapApplication} from '@angular/platform-browser';
|
2
|
-
import {
|
3
|
-
import {config} from './app/app.config.server';
|
1
|
+
import { bootstrapApplication } from '@angular/platform-browser';
|
2
|
+
import { RemoteEntry<%= componentType %> } from './app/remote-entry/entry<%= componentFileSuffix %>';
|
3
|
+
import { config } from './app/app.config.server';
|
4
4
|
|
5
|
-
const bootstrap = () => bootstrapApplication(
|
5
|
+
const bootstrap = () => bootstrapApplication(RemoteEntry<%= componentType %>, config);
|
6
6
|
|
7
7
|
export default bootstrap;
|
@@ -4,6 +4,7 @@ exports.updateSsrSetup = updateSsrSetup;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const path_1 = require("path");
|
6
6
|
const versions_1 = require("../../../utils/versions");
|
7
|
+
const artifact_types_1 = require("../../utils/artifact-types");
|
7
8
|
const version_utils_1 = require("../../utils/version-utils");
|
8
9
|
async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfiguration, skipPackageJson, }) {
|
9
10
|
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
@@ -28,9 +29,13 @@ async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfi
|
|
28
29
|
tmpl: '',
|
29
30
|
});
|
30
31
|
if (standalone) {
|
32
|
+
const componentType = (0, artifact_types_1.getComponentType)(tree);
|
33
|
+
const componentFileSuffix = componentType ? `.${componentType}` : '';
|
31
34
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '../files/standalone'), project.root, {
|
32
35
|
appName,
|
33
36
|
standalone,
|
37
|
+
componentType: componentType ? (0, devkit_1.names)(componentType).className : '',
|
38
|
+
componentFileSuffix,
|
34
39
|
tmpl: '',
|
35
40
|
});
|
36
41
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.remote = remote;
|
4
|
+
const tslib_1 = require("tslib");
|
4
5
|
const devkit_1 = require("@nx/devkit");
|
5
6
|
const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
|
6
7
|
const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
|
@@ -10,8 +11,14 @@ const application_1 = require("../application/application");
|
|
10
11
|
const setup_mf_1 = require("../setup-mf/setup-mf");
|
11
12
|
const add_mf_env_to_inputs_1 = require("../utils/add-mf-env-to-inputs");
|
12
13
|
const lib_1 = require("./lib");
|
14
|
+
const assert_mf_utils_1 = require("../utils/assert-mf-utils");
|
15
|
+
const convert_to_rspack_1 = tslib_1.__importDefault(require("../convert-to-rspack/convert-to-rspack"));
|
13
16
|
async function remote(tree, schema) {
|
14
17
|
(0, ts_solution_setup_1.assertNotUsingTsSolutionSetup)(tree, 'angular', 'remote');
|
18
|
+
// TODO: Replace with Rspack when confidence is high enough
|
19
|
+
schema.bundler ??= 'webpack';
|
20
|
+
const isRspack = schema.bundler === 'rspack';
|
21
|
+
(0, assert_mf_utils_1.assertRspackIsCSR)(schema.bundler, schema.ssr ?? false, schema.serverRouting ?? false);
|
15
22
|
const { typescriptConfiguration = true, ...options } = schema;
|
16
23
|
options.standalone = options.standalone ?? true;
|
17
24
|
const projects = (0, devkit_1.getProjects)(tree);
|
@@ -75,6 +82,22 @@ async function remote(tree, schema) {
|
|
75
82
|
installTasks.push(ssrInstallTask);
|
76
83
|
}
|
77
84
|
(0, add_mf_env_to_inputs_1.addMfEnvToTargetDefaultInputs)(tree);
|
85
|
+
if (isRspack) {
|
86
|
+
await (0, convert_to_rspack_1.default)(tree, {
|
87
|
+
project: remoteProjectName,
|
88
|
+
skipInstall: options.skipPackageJson,
|
89
|
+
skipFormat: true,
|
90
|
+
});
|
91
|
+
}
|
92
|
+
const project = (0, devkit_1.readProjectConfiguration)(tree, remoteProjectName);
|
93
|
+
project.targets.serve ??= {};
|
94
|
+
project.targets.serve.options ??= {};
|
95
|
+
if (options.host) {
|
96
|
+
project.targets.serve.dependsOn ??= [];
|
97
|
+
project.targets.serve.dependsOn.push(`${options.host}:serve`);
|
98
|
+
}
|
99
|
+
project.targets.serve.options.port = port;
|
100
|
+
(0, devkit_1.updateProjectConfiguration)(tree, remoteProjectName, project);
|
78
101
|
if (!options.skipFormat) {
|
79
102
|
await (0, devkit_1.formatFiles)(tree);
|
80
103
|
}
|
@@ -42,6 +42,12 @@
|
|
42
42
|
"type": "number",
|
43
43
|
"description": "The port on which this app should be served."
|
44
44
|
},
|
45
|
+
"bundler": {
|
46
|
+
"type": "string",
|
47
|
+
"description": "The bundler to use for the remote application.",
|
48
|
+
"default": "webpack",
|
49
|
+
"enum": ["webpack", "rspack"]
|
50
|
+
},
|
45
51
|
"style": {
|
46
52
|
"description": "The file extension to be used for style files.",
|
47
53
|
"type": "string",
|
@@ -165,7 +171,7 @@
|
|
165
171
|
"default": false
|
166
172
|
},
|
167
173
|
"serverRouting": {
|
168
|
-
"description": "Creates a server application using the Server Routing and App Engine APIs (Developer Preview). _Note: this is only supported in Angular versions
|
174
|
+
"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.",
|
169
175
|
"type": "boolean"
|
170
176
|
},
|
171
177
|
"typescriptConfiguration": {
|
@@ -1,7 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.convertComponentToScam = convertComponentToScam;
|
4
|
-
const devkit_1 = require("@nx/devkit");
|
5
4
|
const js_1 = require("@nx/js");
|
6
5
|
const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
|
7
6
|
let tsModule;
|
@@ -22,8 +21,7 @@ function convertComponentToScam(tree, options) {
|
|
22
21
|
tree.write(options.filePath, updatedComponentSource);
|
23
22
|
return;
|
24
23
|
}
|
25
|
-
|
26
|
-
tree.write(moduleFilePath, getModuleFileContent(options.symbolName, options.fileName));
|
24
|
+
tree.write(options.modulePath, getModuleFileContent(options.symbolName, options.fileName));
|
27
25
|
}
|
28
26
|
function getModuleFileContent(componentClassName, componentFileName) {
|
29
27
|
return `import { NgModule } from '@angular/core';
|
@@ -3,20 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeOptions = normalizeOptions;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
|
6
|
+
const artifact_types_1 = require("../../utils/artifact-types");
|
6
7
|
const validations_1 = require("../../utils/validations");
|
8
|
+
const version_utils_1 = require("../../utils/version-utils");
|
7
9
|
async function normalizeOptions(tree, options) {
|
8
|
-
|
10
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
11
|
+
if (angularMajorVersion < 20) {
|
12
|
+
options.type ??= 'component';
|
13
|
+
}
|
9
14
|
const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
|
10
15
|
name: options.name,
|
11
16
|
path: options.path,
|
12
|
-
suffix: options.type
|
17
|
+
suffix: options.type,
|
13
18
|
allowedFileExtensions: ['ts'],
|
14
19
|
fileExtension: 'ts',
|
15
20
|
});
|
16
21
|
const { className } = (0, devkit_1.names)(name);
|
17
|
-
const
|
22
|
+
const suffixClassName = options.type ? (0, devkit_1.names)(options.type).className : '';
|
18
23
|
const symbolName = `${className}${suffixClassName}`;
|
19
24
|
(0, validations_1.validateClassName)(symbolName);
|
25
|
+
const moduleTypeSeparator = (0, artifact_types_1.getModuleTypeSeparator)(tree);
|
26
|
+
const modulePath = (0, devkit_1.joinPathFragments)(directory, `${name}${moduleTypeSeparator}module.ts`);
|
20
27
|
return {
|
21
28
|
...options,
|
22
29
|
export: options.export ?? true,
|
@@ -27,5 +34,6 @@ async function normalizeOptions(tree, options) {
|
|
27
34
|
name,
|
28
35
|
symbolName,
|
29
36
|
projectName,
|
37
|
+
modulePath,
|
30
38
|
};
|
31
39
|
}
|
@@ -94,8 +94,7 @@
|
|
94
94
|
},
|
95
95
|
"type": {
|
96
96
|
"type": "string",
|
97
|
-
"description": "
|
98
|
-
"default": "component"
|
97
|
+
"description": "Append a custom type to the component's filename. It defaults to 'component' for Angular versions below v20. For Angular v20 and above, no type is appended unless specified."
|
99
98
|
},
|
100
99
|
"prefix": {
|
101
100
|
"type": "string",
|
@@ -1,7 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.convertDirectiveToScam = convertDirectiveToScam;
|
4
|
-
const devkit_1 = require("@nx/devkit");
|
5
4
|
const js_1 = require("@nx/js");
|
6
5
|
const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
|
7
6
|
let tsModule;
|
@@ -22,8 +21,7 @@ function convertDirectiveToScam(tree, options) {
|
|
22
21
|
tree.write(options.filePath, updatedDirectiveSource);
|
23
22
|
return;
|
24
23
|
}
|
25
|
-
|
26
|
-
tree.write(scamFilePath, getModuleFileContent(options.symbolName, options.fileName));
|
24
|
+
tree.write(options.modulePath, getModuleFileContent(options.symbolName, options.fileName));
|
27
25
|
}
|
28
26
|
function getModuleFileContent(directiveClassName, directiveFileName) {
|
29
27
|
return `import { NgModule } from '@angular/core';
|