@nx/angular 21.1.1 → 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
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const devkit_1 = require("@nx/devkit");
|
|
6
|
+
const ts = tslib_1.__importStar(require("typescript"));
|
|
7
|
+
const file_change_recorder_1 = require("../../utils/file-change-recorder");
|
|
8
|
+
const versions_1 = require("../../utils/versions");
|
|
9
|
+
const projects_1 = require("../utils/projects");
|
|
10
|
+
async function default_1(tree) {
|
|
11
|
+
const projects = await (0, projects_1.getProjectsFilteredByDependencies)(tree, [
|
|
12
|
+
'npm:@angular/platform-server',
|
|
13
|
+
]);
|
|
14
|
+
if (!projects.length) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
let isSsrInstalled = false;
|
|
18
|
+
for (const { project } of projects) {
|
|
19
|
+
(0, devkit_1.visitNotIgnoredFiles)(tree, project.root, (file) => {
|
|
20
|
+
if (!file.endsWith('.ts') || file.endsWith('.d.ts')) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const shouldInstallSsr = processFile(tree, file);
|
|
24
|
+
if (shouldInstallSsr && !isSsrInstalled) {
|
|
25
|
+
isSsrInstalled = true;
|
|
26
|
+
(0, devkit_1.addDependenciesToPackageJson)(tree, { '@angular/ssr': versions_1.angularDevkitVersion }, {}, undefined, true);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
31
|
+
}
|
|
32
|
+
function processFile(tree, filePath) {
|
|
33
|
+
const content = tree.read(filePath, 'utf-8');
|
|
34
|
+
if (!content.includes('provideServerRendering') ||
|
|
35
|
+
!content.includes('@angular/platform-server')) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
|
|
39
|
+
let platformServerHasProvideServerRendering = false;
|
|
40
|
+
let platformServerImportNode;
|
|
41
|
+
let ssrImportNode;
|
|
42
|
+
const platformServerImports = new Set();
|
|
43
|
+
sourceFile.forEachChild((node) => {
|
|
44
|
+
if (!ts.isImportDeclaration(node)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const moduleSpecifier = node.moduleSpecifier.getText(sourceFile);
|
|
48
|
+
if (moduleSpecifier.includes('@angular/platform-server')) {
|
|
49
|
+
platformServerImportNode = node;
|
|
50
|
+
const importClause = node.importClause;
|
|
51
|
+
if (importClause &&
|
|
52
|
+
importClause.namedBindings &&
|
|
53
|
+
ts.isNamedImports(importClause.namedBindings)) {
|
|
54
|
+
const namedImports = importClause.namedBindings.elements.map((e) => e.getText(sourceFile));
|
|
55
|
+
namedImports.forEach((importName) => {
|
|
56
|
+
if (importName === 'provideServerRendering') {
|
|
57
|
+
platformServerHasProvideServerRendering = true;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
platformServerImports.add(importName);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (moduleSpecifier.includes('@angular/ssr')) {
|
|
66
|
+
ssrImportNode = node;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
if (!platformServerHasProvideServerRendering) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const recorder = new file_change_recorder_1.FileChangeRecorder(tree, filePath);
|
|
73
|
+
const printer = ts.createPrinter({
|
|
74
|
+
newLine: ts.NewLineKind.LineFeed,
|
|
75
|
+
});
|
|
76
|
+
if (ssrImportNode?.importClause?.namedBindings &&
|
|
77
|
+
ts.isNamedImports(ssrImportNode.importClause.namedBindings)) {
|
|
78
|
+
const namedBindingsNode = ssrImportNode.importClause
|
|
79
|
+
.namedBindings;
|
|
80
|
+
const updatedNamedBindingsNode = ts.factory.updateNamedImports(namedBindingsNode, [
|
|
81
|
+
...namedBindingsNode.elements,
|
|
82
|
+
ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier('provideServerRendering')),
|
|
83
|
+
]);
|
|
84
|
+
recorder.replace(namedBindingsNode, printer.printNode(ts.EmitHint.Unspecified, updatedNamedBindingsNode, sourceFile));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
/**
|
|
88
|
+
* Add a new import statement with the needed named import in case it
|
|
89
|
+
* doesn't exist yet or it doesn't have named imports.
|
|
90
|
+
*
|
|
91
|
+
* It would be quite uncommon to have an import from @angular/ssr without
|
|
92
|
+
* named imports, but if that's the case, we'll just add an extra import
|
|
93
|
+
* statement with the needed named import.
|
|
94
|
+
*/
|
|
95
|
+
recorder.insertLeft(0, `import { provideServerRendering } from '@angular/ssr';\n`);
|
|
96
|
+
}
|
|
97
|
+
if (platformServerImports.size > 0) {
|
|
98
|
+
// we only collected platform server imports because there were named
|
|
99
|
+
// imports, so we can safely use the type
|
|
100
|
+
const namedBindingsNode = platformServerImportNode.importClause
|
|
101
|
+
.namedBindings;
|
|
102
|
+
const updatedNamedBindingsNode = ts.factory.updateNamedImports(namedBindingsNode, namedBindingsNode.elements.filter((e) => platformServerImports.has(e.getText(sourceFile))));
|
|
103
|
+
recorder.replace(namedBindingsNode, printer.printNode(ts.EmitHint.Unspecified, updatedNamedBindingsNode, sourceFile));
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
recorder.remove(platformServerImportNode.getFullStart(), platformServerImportNode.getEnd());
|
|
107
|
+
}
|
|
108
|
+
recorder.applyChanges();
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const devkit_1 = require("@nx/devkit");
|
|
6
|
+
const tsquery_1 = require("@phenomnomnominal/tsquery");
|
|
7
|
+
const ts = tslib_1.__importStar(require("typescript"));
|
|
8
|
+
const file_change_recorder_1 = require("../../utils/file-change-recorder");
|
|
9
|
+
const projects_1 = require("../utils/projects");
|
|
10
|
+
async function default_1(tree) {
|
|
11
|
+
const projects = await (0, projects_1.getProjectsFilteredByDependencies)(tree, [
|
|
12
|
+
'npm:@angular/ssr',
|
|
13
|
+
]);
|
|
14
|
+
if (!projects.length) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
for (const { project } of projects) {
|
|
18
|
+
(0, devkit_1.visitNotIgnoredFiles)(tree, project.root, (file) => {
|
|
19
|
+
if (!file.endsWith('.ts') || file.endsWith('.d.ts')) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
processFile(tree, file);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
26
|
+
}
|
|
27
|
+
function processFile(tree, filePath) {
|
|
28
|
+
const content = tree.read(filePath, 'utf-8');
|
|
29
|
+
if (!content.includes('provideServerRouting') ||
|
|
30
|
+
!content.includes('@angular/ssr')) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const sourceFile = tsquery_1.tsquery.ast(content);
|
|
34
|
+
const providersArray = tsquery_1.tsquery.query(sourceFile, 'PropertyAssignment:has(Identifier[name=providers]) > ArrayLiteralExpression:has(CallExpression > Identifier[name=provideServerRouting])', { visitAllChildren: true })[0];
|
|
35
|
+
if (!providersArray) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const recorder = new file_change_recorder_1.FileChangeRecorder(tree, filePath);
|
|
39
|
+
const printer = ts.createPrinter({
|
|
40
|
+
newLine: ts.NewLineKind.LineFeed,
|
|
41
|
+
});
|
|
42
|
+
let provideServerRenderingCall;
|
|
43
|
+
let provideServerRoutingCall;
|
|
44
|
+
const providerCallNodes = providersArray.elements.filter((el) => ts.isCallExpression(el));
|
|
45
|
+
for (const node of providerCallNodes) {
|
|
46
|
+
if (node.expression.getText() === 'provideServerRendering') {
|
|
47
|
+
provideServerRenderingCall = node;
|
|
48
|
+
}
|
|
49
|
+
else if (node.expression.getText() === 'provideServerRouting') {
|
|
50
|
+
provideServerRoutingCall = node;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const withRoutesCall = ts.factory.createCallExpression(ts.factory.createIdentifier('withRoutes'), undefined, [provideServerRoutingCall.arguments.at(0)]);
|
|
54
|
+
let updatedProvidersArray;
|
|
55
|
+
if (provideServerRenderingCall) {
|
|
56
|
+
// remove the "provideServerRouting" call and update the existing "provideServerRendering" call
|
|
57
|
+
updatedProvidersArray = ts.factory.updateArrayLiteralExpression(providersArray, providersArray.elements
|
|
58
|
+
.filter((el) => !(ts.isCallExpression(el) &&
|
|
59
|
+
ts.isIdentifier(el.expression) &&
|
|
60
|
+
el.expression.text === 'provideServerRouting'))
|
|
61
|
+
.map((el) => {
|
|
62
|
+
if (ts.isCallExpression(el) &&
|
|
63
|
+
ts.isIdentifier(el.expression) &&
|
|
64
|
+
el.expression.text === 'provideServerRendering') {
|
|
65
|
+
return ts.factory.updateCallExpression(el, el.expression, el.typeArguments, [withRoutesCall, ...provideServerRoutingCall.arguments.slice(1)]);
|
|
66
|
+
}
|
|
67
|
+
return el;
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// replace the "provideServerRouting" call with the new "provideServerRendering" call
|
|
72
|
+
updatedProvidersArray = ts.factory.updateArrayLiteralExpression(providersArray, providersArray.elements.map((el) => {
|
|
73
|
+
if (ts.isCallExpression(el) &&
|
|
74
|
+
ts.isIdentifier(el.expression) &&
|
|
75
|
+
el.expression.text === 'provideServerRouting') {
|
|
76
|
+
return ts.factory.createCallExpression(ts.factory.createIdentifier('provideServerRendering'), undefined, [withRoutesCall, ...provideServerRoutingCall.arguments.slice(1)]);
|
|
77
|
+
}
|
|
78
|
+
return el;
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
recorder.replace(providersArray, printer.printNode(ts.EmitHint.Unspecified, updatedProvidersArray, sourceFile));
|
|
82
|
+
const importDecl = sourceFile.statements.find((stmt) => ts.isImportDeclaration(stmt) &&
|
|
83
|
+
ts.isStringLiteral(stmt.moduleSpecifier) &&
|
|
84
|
+
stmt.moduleSpecifier.text === '@angular/ssr');
|
|
85
|
+
if (importDecl?.importClause?.namedBindings) {
|
|
86
|
+
const namedBindings = importDecl?.importClause.namedBindings;
|
|
87
|
+
if (ts.isNamedImports(namedBindings)) {
|
|
88
|
+
// remove the "provideServerRouting" import and ensure we have the "withRoutes" import
|
|
89
|
+
const updatedElementNames = new Set([
|
|
90
|
+
...namedBindings.elements
|
|
91
|
+
.map((el) => el.getText())
|
|
92
|
+
.filter((x) => x !== 'provideServerRouting'),
|
|
93
|
+
'withRoutes',
|
|
94
|
+
]);
|
|
95
|
+
const updatedNamedBindings = ts.factory.updateNamedImports(namedBindings, Array.from(updatedElementNames).map((name) => ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(name))));
|
|
96
|
+
const printer = ts.createPrinter({
|
|
97
|
+
newLine: ts.NewLineKind.LineFeed,
|
|
98
|
+
});
|
|
99
|
+
recorder.replace(namedBindings, printer.printNode(ts.EmitHint.Unspecified, updatedNamedBindings, sourceFile));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
recorder.applyChanges();
|
|
103
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const TYPE_GENERATORS = ['component', 'directive', 'service'];
|
|
6
|
+
const TYPE_SEPARATOR_GENERATORS = [
|
|
7
|
+
'guard',
|
|
8
|
+
'interceptor',
|
|
9
|
+
'module',
|
|
10
|
+
'pipe',
|
|
11
|
+
'resolver',
|
|
12
|
+
];
|
|
13
|
+
async function default_1(tree) {
|
|
14
|
+
const nxJson = (0, devkit_1.readNxJson)(tree);
|
|
15
|
+
nxJson.generators ??= {};
|
|
16
|
+
for (const generator of TYPE_GENERATORS) {
|
|
17
|
+
setDefault(nxJson.generators, '@nx/angular', generator, 'type', generator);
|
|
18
|
+
setDefault(nxJson.generators, '@schematics/angular', generator, 'type', generator);
|
|
19
|
+
}
|
|
20
|
+
setDefault(nxJson.generators, '@nx/angular', 'scam', 'type', 'component');
|
|
21
|
+
setDefault(nxJson.generators, '@nx/angular', 'scam-directive', 'type', 'directive');
|
|
22
|
+
for (const generator of TYPE_SEPARATOR_GENERATORS) {
|
|
23
|
+
setDefault(nxJson.generators, '@nx/angular', generator, 'typeSeparator', '.');
|
|
24
|
+
setDefault(nxJson.generators, '@schematics/angular', generator, 'typeSeparator', '.');
|
|
25
|
+
}
|
|
26
|
+
(0, devkit_1.updateNxJson)(tree, nxJson);
|
|
27
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
28
|
+
}
|
|
29
|
+
function setDefault(generators, collection, generator, option, value) {
|
|
30
|
+
const generatorKey = `${collection}:${generator}`;
|
|
31
|
+
if (generators[generatorKey]?.[option] ||
|
|
32
|
+
generators[collection]?.[generator]?.[option]) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (generators[generatorKey]) {
|
|
36
|
+
generators[generatorKey][option] = value;
|
|
37
|
+
}
|
|
38
|
+
else if (generators[collection]?.[generator]) {
|
|
39
|
+
generators[collection][generator][option] = value;
|
|
40
|
+
}
|
|
41
|
+
else if (generators[collection]) {
|
|
42
|
+
generators[collection][generator] = { [option]: value };
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
generators[generatorKey] = { [option]: value };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.angularCliVersion = void 0;
|
|
4
|
+
exports.default = default_1;
|
|
5
|
+
const devkit_1 = require("@nx/devkit");
|
|
6
|
+
exports.angularCliVersion = '20.0.0-rc.3';
|
|
7
|
+
async function default_1(tree) {
|
|
8
|
+
let shouldFormat = false;
|
|
9
|
+
(0, devkit_1.updateJson)(tree, 'package.json', (json) => {
|
|
10
|
+
if (json.devDependencies?.['@angular/cli']) {
|
|
11
|
+
json.devDependencies['@angular/cli'] = exports.angularCliVersion;
|
|
12
|
+
shouldFormat = true;
|
|
13
|
+
}
|
|
14
|
+
else if (json.dependencies?.['@angular/cli']) {
|
|
15
|
+
json.dependencies['@angular/cli'] = exports.angularCliVersion;
|
|
16
|
+
shouldFormat = true;
|
|
17
|
+
}
|
|
18
|
+
return json;
|
|
19
|
+
});
|
|
20
|
+
if (shouldFormat) {
|
|
21
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = default_1;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const targets_1 = require("../../utils/targets");
|
|
6
|
+
const projects_1 = require("../utils/projects");
|
|
7
|
+
async function default_1(tree) {
|
|
8
|
+
const uniqueTsConfigs = new Set();
|
|
9
|
+
const projects = await (0, projects_1.getProjectsFilteredByDependencies)(tree, [
|
|
10
|
+
'npm:@angular/core',
|
|
11
|
+
]);
|
|
12
|
+
for (const { project } of projects) {
|
|
13
|
+
for (const [, target] of (0, targets_1.allProjectTargets)(project)) {
|
|
14
|
+
for (const [, options] of (0, targets_1.allTargetOptions)(target)) {
|
|
15
|
+
if (typeof options?.tsConfig === 'string') {
|
|
16
|
+
uniqueTsConfigs.add(options.tsConfig);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
for (const tsConfig of uniqueTsConfigs) {
|
|
22
|
+
if (tree.exists(tsConfig)) {
|
|
23
|
+
updateModuleResolution(tree, tsConfig);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
27
|
+
}
|
|
28
|
+
function updateModuleResolution(tree, tsConfigPath) {
|
|
29
|
+
const tsConfig = (0, devkit_1.readJson)(tree, tsConfigPath);
|
|
30
|
+
if (!tsConfig.compilerOptions) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const { compilerOptions } = tsConfig;
|
|
34
|
+
// Only update if module is not 'preserve' and moduleResolution is not already 'bundler'
|
|
35
|
+
if (compilerOptions.module === 'preserve' ||
|
|
36
|
+
compilerOptions.moduleResolution === 'bundler') {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// Update moduleResolution to 'bundler'
|
|
40
|
+
(0, devkit_1.updateJson)(tree, tsConfigPath, (json) => {
|
|
41
|
+
json.compilerOptions ??= {};
|
|
42
|
+
json.compilerOptions.moduleResolution = 'bundler';
|
|
43
|
+
return json;
|
|
44
|
+
});
|
|
45
|
+
}
|
package/src/plugins/plugin.js
CHANGED
|
@@ -21,8 +21,14 @@ const knownExecutors = {
|
|
|
21
21
|
'@angular-devkit/build-angular:ng-packagr',
|
|
22
22
|
'@angular/build:ng-packagr',
|
|
23
23
|
]),
|
|
24
|
-
devServer: new Set([
|
|
25
|
-
|
|
24
|
+
devServer: new Set([
|
|
25
|
+
'@angular-devkit/build-angular:dev-server',
|
|
26
|
+
'@angular/build:dev-server',
|
|
27
|
+
]),
|
|
28
|
+
extractI18n: new Set([
|
|
29
|
+
'@angular-devkit/build-angular:extract-i18n',
|
|
30
|
+
'@angular/build:extract-i18n',
|
|
31
|
+
]),
|
|
26
32
|
prerender: new Set([
|
|
27
33
|
'@angular-devkit/build-angular:prerender',
|
|
28
34
|
'@nguniversal/builders:prerender',
|
|
@@ -32,7 +38,10 @@ const knownExecutors = {
|
|
|
32
38
|
'@angular-devkit/build-angular:ssr-dev-server',
|
|
33
39
|
'@nguniversal/builders:ssr-dev-server',
|
|
34
40
|
]),
|
|
35
|
-
test: new Set([
|
|
41
|
+
test: new Set([
|
|
42
|
+
'@angular-devkit/build-angular:karma',
|
|
43
|
+
'@angular/build:karma',
|
|
44
|
+
]),
|
|
36
45
|
};
|
|
37
46
|
const pmc = (0, devkit_1.getPackageManagerCommand)();
|
|
38
47
|
function readProjectsCache(cachePath) {
|
|
@@ -111,7 +120,7 @@ async function buildAngularProjects(configFilePath, options, angularWorkspaceRoo
|
|
|
111
120
|
appShellTargets.push({ target: nxTargetName, project: projectName });
|
|
112
121
|
}
|
|
113
122
|
else if (knownExecutors.build.has(angularTarget.builder)) {
|
|
114
|
-
await updateBuildTarget(nxTargetName, targets[nxTargetName], angularTarget, context, angularWorkspaceRoot, project.root, namedInputs);
|
|
123
|
+
await updateBuildTarget(projectName, nxTargetName, targets[nxTargetName], angularTarget, context, angularWorkspaceRoot, project.root, namedInputs);
|
|
115
124
|
}
|
|
116
125
|
else if (knownExecutors.devServer.has(angularTarget.builder)) {
|
|
117
126
|
targets[nxTargetName].continuous = true;
|
|
@@ -196,21 +205,21 @@ function updateAppShellTarget(projectName, targetName, projects, angularJson, an
|
|
|
196
205
|
target.inputs = inputs;
|
|
197
206
|
target.outputs = outputs;
|
|
198
207
|
}
|
|
199
|
-
async function updateBuildTarget(targetName, target, angularTarget, context, angularWorkspaceRoot, projectRoot, namedInputs) {
|
|
208
|
+
async function updateBuildTarget(projectName, targetName, target, angularTarget, context, angularWorkspaceRoot, projectRoot, namedInputs) {
|
|
200
209
|
target.dependsOn = [`^${targetName}`];
|
|
201
|
-
if (angularTarget.
|
|
202
|
-
const fullOutputPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, angularTarget.options.outputPath);
|
|
203
|
-
target.outputs = [
|
|
204
|
-
getOutput(fullOutputPath, context.workspaceRoot, angularWorkspaceRoot, projectRoot),
|
|
205
|
-
];
|
|
206
|
-
}
|
|
207
|
-
else if (angularTarget.builder === '@angular-devkit/build-angular:ng-packagr' ||
|
|
210
|
+
if (angularTarget.builder === '@angular-devkit/build-angular:ng-packagr' ||
|
|
208
211
|
angularTarget.builder === '@angular/build:ng-packagr') {
|
|
209
212
|
const outputs = await getNgPackagrOutputs(angularTarget, angularWorkspaceRoot, projectRoot, context);
|
|
210
213
|
if (outputs.length) {
|
|
211
214
|
target.outputs = outputs;
|
|
212
215
|
}
|
|
213
216
|
}
|
|
217
|
+
else {
|
|
218
|
+
const fullOutputPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, angularTarget.options?.outputPath ?? posix.join('dist', projectName));
|
|
219
|
+
target.outputs = [
|
|
220
|
+
getOutput(fullOutputPath, context.workspaceRoot, angularWorkspaceRoot, projectRoot),
|
|
221
|
+
];
|
|
222
|
+
}
|
|
214
223
|
if (target.outputs?.length) {
|
|
215
224
|
// make it cacheable if we were able to identify outputs
|
|
216
225
|
target.cache = true;
|
|
@@ -272,7 +281,7 @@ function updatePrerenderTarget(projectName, targetName, projects, angularJson) {
|
|
|
272
281
|
target.outputs = outputs;
|
|
273
282
|
}
|
|
274
283
|
async function getNgPackagrOutputs(target, angularWorkspaceRoot, projectRoot, context) {
|
|
275
|
-
let ngPackageJsonPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, target.options.
|
|
284
|
+
let ngPackageJsonPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, target.options?.project ?? (0, node_path_1.join)(projectRoot, 'ng-package.json'));
|
|
276
285
|
const readConfig = async (configPath) => {
|
|
277
286
|
if (!(0, node_fs_1.existsSync)(configPath)) {
|
|
278
287
|
return undefined;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as latestVersions from './versions';
|
|
2
|
-
type SupportedVersions = '
|
|
2
|
+
type SupportedVersions = 'angularV18' | 'angularV19';
|
|
3
3
|
type LatestPackageVersionNames = Exclude<keyof typeof latestVersions, 'nxVersion'>;
|
|
4
4
|
type CompatPackageVersionNames = LatestPackageVersionNames;
|
|
5
5
|
export type PackageVersionNames = LatestPackageVersionNames | CompatPackageVersionNames;
|
|
6
6
|
export type VersionMap = {
|
|
7
|
-
angularV17: Record<Exclude<CompatPackageVersionNames, 'typescriptEslintVersion'>, string>;
|
|
8
7
|
angularV18: Record<CompatPackageVersionNames, string>;
|
|
8
|
+
angularV19: Record<CompatPackageVersionNames, string>;
|
|
9
9
|
};
|
|
10
10
|
export type PackageLatestVersions = Record<LatestPackageVersionNames, string>;
|
|
11
11
|
export type PackageCompatVersions = VersionMap[SupportedVersions];
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.backwardCompatibleVersions = void 0;
|
|
4
4
|
exports.backwardCompatibleVersions = {
|
|
5
|
-
|
|
6
|
-
angularVersion: '~
|
|
7
|
-
angularDevkitVersion: '~
|
|
8
|
-
ngPackagrVersion: '~
|
|
5
|
+
angularV18: {
|
|
6
|
+
angularVersion: '~18.2.0',
|
|
7
|
+
angularDevkitVersion: '~18.2.0',
|
|
8
|
+
ngPackagrVersion: '~18.2.0',
|
|
9
9
|
angularRspackVersion: '~20.6.1',
|
|
10
|
-
ngrxVersion: '~
|
|
10
|
+
ngrxVersion: '~18.0.2',
|
|
11
11
|
rxjsVersion: '~7.8.0',
|
|
12
12
|
zoneJsVersion: '~0.14.3',
|
|
13
13
|
angularJsVersion: '1.7.9',
|
|
@@ -17,27 +17,29 @@ exports.backwardCompatibleVersions = {
|
|
|
17
17
|
expressVersion: '^4.21.2',
|
|
18
18
|
typesExpressVersion: '^4.17.21',
|
|
19
19
|
browserSyncVersion: '^3.0.0',
|
|
20
|
-
moduleFederationNodeVersion: '~2.
|
|
21
|
-
moduleFederationEnhancedVersion: '
|
|
22
|
-
angularEslintVersion: '
|
|
20
|
+
moduleFederationNodeVersion: '~2.5.0',
|
|
21
|
+
moduleFederationEnhancedVersion: '0.6.9',
|
|
22
|
+
angularEslintVersion: '^18.3.0',
|
|
23
|
+
typescriptEslintVersion: '^7.16.0',
|
|
23
24
|
tailwindVersion: '^3.0.2',
|
|
24
25
|
postcssVersion: '^8.4.5',
|
|
25
26
|
postcssUrlVersion: '~10.1.3',
|
|
26
27
|
autoprefixerVersion: '^10.4.0',
|
|
27
28
|
tsNodeVersion: '10.9.1',
|
|
28
|
-
jestPresetAngularVersion: '~14.0
|
|
29
|
+
jestPresetAngularVersion: '~14.1.0',
|
|
29
30
|
typesNodeVersion: '18.16.9',
|
|
30
31
|
jasmineMarblesVersion: '^0.9.2',
|
|
31
32
|
jsoncEslintParserVersion: '^2.1.0',
|
|
33
|
+
webpackMergeVersion: '^5.8.0',
|
|
32
34
|
},
|
|
33
|
-
|
|
34
|
-
angularVersion: '~
|
|
35
|
-
angularDevkitVersion: '~
|
|
36
|
-
ngPackagrVersion: '~
|
|
35
|
+
angularV19: {
|
|
36
|
+
angularVersion: '~19.2.0',
|
|
37
|
+
angularDevkitVersion: '~19.2.0',
|
|
38
|
+
ngPackagrVersion: '~19.2.0',
|
|
37
39
|
angularRspackVersion: '~20.6.1',
|
|
38
|
-
ngrxVersion: '~
|
|
40
|
+
ngrxVersion: '~19.1.0',
|
|
39
41
|
rxjsVersion: '~7.8.0',
|
|
40
|
-
zoneJsVersion: '~0.
|
|
42
|
+
zoneJsVersion: '~0.15.0',
|
|
41
43
|
angularJsVersion: '1.7.9',
|
|
42
44
|
tsLibVersion: '^2.3.0',
|
|
43
45
|
corsVersion: '~2.8.5',
|
|
@@ -45,18 +47,19 @@ exports.backwardCompatibleVersions = {
|
|
|
45
47
|
expressVersion: '^4.21.2',
|
|
46
48
|
typesExpressVersion: '^4.17.21',
|
|
47
49
|
browserSyncVersion: '^3.0.0',
|
|
48
|
-
moduleFederationNodeVersion: '
|
|
49
|
-
moduleFederationEnhancedVersion: '0.
|
|
50
|
-
angularEslintVersion: '^
|
|
50
|
+
moduleFederationNodeVersion: '^2.6.26',
|
|
51
|
+
moduleFederationEnhancedVersion: '^0.9.0',
|
|
52
|
+
angularEslintVersion: '^19.2.0',
|
|
51
53
|
typescriptEslintVersion: '^7.16.0',
|
|
52
54
|
tailwindVersion: '^3.0.2',
|
|
53
55
|
postcssVersion: '^8.4.5',
|
|
54
56
|
postcssUrlVersion: '~10.1.3',
|
|
55
57
|
autoprefixerVersion: '^10.4.0',
|
|
56
58
|
tsNodeVersion: '10.9.1',
|
|
57
|
-
jestPresetAngularVersion: '~14.
|
|
59
|
+
jestPresetAngularVersion: '~14.4.0',
|
|
58
60
|
typesNodeVersion: '18.16.9',
|
|
59
61
|
jasmineMarblesVersion: '^0.9.2',
|
|
60
62
|
jsoncEslintParserVersion: '^2.1.0',
|
|
63
|
+
webpackMergeVersion: '^5.8.0',
|
|
61
64
|
},
|
|
62
65
|
};
|
|
@@ -444,9 +444,18 @@ function getListOfRoutes(source) {
|
|
|
444
444
|
}
|
|
445
445
|
function isNgStandaloneApp(tree, projectName) {
|
|
446
446
|
const project = (0, devkit_1.readProjectConfiguration)(tree, projectName);
|
|
447
|
-
|
|
447
|
+
let mainFile = project.targets?.build?.options?.main ??
|
|
448
448
|
project.targets?.build?.options?.browser;
|
|
449
|
-
|
|
449
|
+
let hasMainFile = false;
|
|
450
|
+
if (mainFile) {
|
|
451
|
+
hasMainFile = true;
|
|
452
|
+
}
|
|
453
|
+
else {
|
|
454
|
+
const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
|
|
455
|
+
mainFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
|
|
456
|
+
hasMainFile = tree.exists(mainFile);
|
|
457
|
+
}
|
|
458
|
+
if (project.projectType !== 'application' || !hasMainFile) {
|
|
450
459
|
return false;
|
|
451
460
|
}
|
|
452
461
|
(0, ensure_typescript_1.ensureTypescript)();
|
|
@@ -548,7 +557,12 @@ function readBootstrapInfo(host, app) {
|
|
|
548
557
|
let mainPath;
|
|
549
558
|
try {
|
|
550
559
|
mainPath =
|
|
551
|
-
config.targets.build.options
|
|
560
|
+
config.targets.build.options?.main ??
|
|
561
|
+
config.targets.build.options?.browser;
|
|
562
|
+
if (!mainPath) {
|
|
563
|
+
const sourceRoot = config.sourceRoot ?? (0, devkit_1.joinPathFragments)(config.root, 'src');
|
|
564
|
+
mainPath = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
|
|
565
|
+
}
|
|
552
566
|
}
|
|
553
567
|
catch (e) {
|
|
554
568
|
throw new Error('Main file cannot be located');
|
|
@@ -18,24 +18,24 @@ function createApp(tree, appName, routing = true) {
|
|
|
18
18
|
// save for getAppDir() lookup by external *.spec.ts tests
|
|
19
19
|
appConfig = {
|
|
20
20
|
appName,
|
|
21
|
-
appModule: `${appName}/src/app/app
|
|
21
|
+
appModule: `${appName}/src/app/app-module.ts`,
|
|
22
22
|
};
|
|
23
23
|
tree.write(appConfig.appModule, `import { NgModule } from '@angular/core';
|
|
24
24
|
import { BrowserModule } from '@angular/platform-browser';
|
|
25
25
|
${routing ? "import { RouterModule } from '@angular/router'" : ''};
|
|
26
|
-
import {
|
|
26
|
+
import { App } from './app';
|
|
27
27
|
@NgModule({
|
|
28
28
|
imports: [BrowserModule, ${routing ? 'RouterModule.forRoot([])' : ''}],
|
|
29
|
-
declarations: [
|
|
30
|
-
bootstrap: [
|
|
29
|
+
declarations: [App],
|
|
30
|
+
bootstrap: [App]
|
|
31
31
|
})
|
|
32
32
|
export class AppModule {}
|
|
33
33
|
`);
|
|
34
|
-
tree.write(`${appName}/src/main.ts`, `import {
|
|
34
|
+
tree.write(`${appName}/src/main.ts`, `import { platformBrowser } from '@angular/platform-browser';
|
|
35
35
|
|
|
36
|
-
import { AppModule } from './app/app
|
|
36
|
+
import { AppModule } from './app/app-module';
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
platformBrowser()
|
|
39
39
|
.bootstrapModule(AppModule)
|
|
40
40
|
.catch(err => console.log(err));
|
|
41
41
|
`);
|
|
@@ -65,7 +65,7 @@ function createLib(tree, libName) {
|
|
|
65
65
|
const { name, className, fileName, propertyName } = (0, devkit_1.names)(libName);
|
|
66
66
|
libConfig = {
|
|
67
67
|
name,
|
|
68
|
-
module: `${propertyName}/src/lib/${fileName}
|
|
68
|
+
module: `${propertyName}/src/lib/${fileName}-module.ts`,
|
|
69
69
|
barrel: `${propertyName}/src/index.ts`,
|
|
70
70
|
};
|
|
71
71
|
tree.write(libConfig.module, `import { NgModule } from '@angular/core';
|
|
@@ -78,6 +78,6 @@ import { CommonModule } from '@angular/common';
|
|
|
78
78
|
})
|
|
79
79
|
export class ${className}Module { }
|
|
80
80
|
`);
|
|
81
|
-
tree.write(libConfig.barrel, `export * from './lib/${fileName}
|
|
81
|
+
tree.write(libConfig.barrel, `export * from './lib/${fileName}-module';
|
|
82
82
|
`);
|
|
83
83
|
}
|
package/src/utils/targets.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { TargetConfiguration } from '@nx/devkit';
|
|
1
|
+
import type { ProjectConfiguration, TargetConfiguration } from '@nx/devkit';
|
|
2
|
+
export declare function allProjectTargets<T>(project: ProjectConfiguration): Iterable<[name: string, target: TargetConfiguration<T>]>;
|
|
2
3
|
export declare function allTargetOptions<T>(target: TargetConfiguration<T>): Iterable<[string | undefined, T]>;
|
package/src/utils/targets.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.allProjectTargets = allProjectTargets;
|
|
3
4
|
exports.allTargetOptions = allTargetOptions;
|
|
5
|
+
function* allProjectTargets(project) {
|
|
6
|
+
for (const [name, target] of Object.entries(project.targets ?? {})) {
|
|
7
|
+
yield [name, target];
|
|
8
|
+
}
|
|
9
|
+
}
|
|
4
10
|
function* allTargetOptions(target) {
|
|
5
11
|
if (target.options) {
|
|
6
12
|
yield [undefined, target.options];
|
package/src/utils/versions.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const nxVersion: any;
|
|
2
|
-
export declare const angularVersion = "
|
|
3
|
-
export declare const angularDevkitVersion = "
|
|
4
|
-
export declare const ngPackagrVersion = "
|
|
2
|
+
export declare const angularVersion = "20.0.0-rc.2";
|
|
3
|
+
export declare const angularDevkitVersion = "20.0.0-rc.3";
|
|
4
|
+
export declare const ngPackagrVersion = "20.0.0-rc.1";
|
|
5
5
|
export declare const angularRspackVersion = "^21.0.1";
|
|
6
6
|
export declare const ngrxVersion = "^19.0.0";
|
|
7
7
|
export declare const rxjsVersion = "~7.8.0";
|
|
@@ -15,6 +15,7 @@ export declare const typesExpressVersion = "^4.17.21";
|
|
|
15
15
|
export declare const browserSyncVersion = "^3.0.0";
|
|
16
16
|
export declare const moduleFederationNodeVersion = "^2.6.26";
|
|
17
17
|
export declare const moduleFederationEnhancedVersion = "^0.9.0";
|
|
18
|
+
export declare const webpackMergeVersion = "^5.8.0";
|
|
18
19
|
export declare const angularEslintVersion = "^19.2.0";
|
|
19
20
|
export declare const typescriptEslintVersion = "^7.16.0";
|
|
20
21
|
export declare const tailwindVersion = "^3.0.2";
|