@nx/angular 21.2.0-canary.20250523-560a53e → 21.2.0-canary.20250527-4a94841
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 +10 -3
- package/fesm2022/nx-angular-mf.mjs.map +1 -1
- package/fesm2022/nx-angular.mjs.map +1 -1
- package/index.d.ts +2 -1
- package/mf/index.d.ts +71 -1
- package/migrations.json +106 -0
- package/ng-package.json +0 -1
- package/package.json +28 -16
- package/plugins/component-testing.js +8 -3
- package/src/builders/dev-server/dev-server.impl.js +4 -7
- package/src/builders/dev-server/lib/normalize-options.js +0 -6
- package/src/builders/dev-server/lib/validate-options.js +0 -4
- package/src/builders/dev-server/schema.d.ts +3 -15
- package/src/builders/dev-server/schema.json +3 -9
- package/src/builders/webpack-browser/webpack-browser.impl.js +2 -0
- package/src/builders/webpack-server/webpack-server.impl.d.ts +3 -1
- package/src/builders/webpack-server/webpack-server.impl.js +2 -0
- package/src/executors/application/application.impl.d.ts +2 -2
- package/src/executors/application/application.impl.js +11 -6
- package/src/executors/application/schema.d.ts +1 -1
- package/src/executors/application/schema.json +21 -10
- package/src/executors/application/utils/normalize-options.js +8 -1
- package/src/executors/application/utils/validate-options.js +10 -40
- package/src/executors/extract-i18n/extract-i18n.impl.js +6 -14
- package/src/executors/extract-i18n/schema.d.ts +1 -6
- package/src/executors/extract-i18n/schema.json +5 -0
- package/src/executors/extract-i18n/utils/validate-options.d.ts +2 -0
- package/src/executors/extract-i18n/utils/validate-options.js +13 -0
- package/src/executors/module-federation-dev-server/lib/normalize-options.js +1 -7
- package/src/executors/module-federation-dev-server/schema.d.ts +3 -15
- package/src/executors/module-federation-dev-server/schema.json +2 -15
- package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +10 -8
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.d.ts +6 -3
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.js +46 -8
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.d.ts +1 -1
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.js +3 -3
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.d.ts +2 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.js +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/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/schema.json +1 -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/schema.json +1 -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/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 +20 -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 +3 -3
- package/src/utils/versions.js +3 -3
- 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
@@ -95,8 +95,7 @@
|
|
95
95
|
},
|
96
96
|
"type": {
|
97
97
|
"type": "string",
|
98
|
-
"description": "
|
99
|
-
"default": "component"
|
98
|
+
"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."
|
100
99
|
},
|
101
100
|
"export": {
|
102
101
|
"type": "boolean",
|
@@ -109,6 +108,11 @@
|
|
109
108
|
"default": false,
|
110
109
|
"description": "Use default export for the component instead of a named export."
|
111
110
|
},
|
111
|
+
"ngHtml": {
|
112
|
+
"type": "boolean",
|
113
|
+
"default": false,
|
114
|
+
"description": "Generate component template files with an '.ng.html' file extension instead of '.html'."
|
115
|
+
},
|
112
116
|
"skipFormat": {
|
113
117
|
"description": "Skip formatting files.",
|
114
118
|
"type": "boolean",
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.convertToApplicationExecutor = convertToApplicationExecutor;
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const posix_1 = require("node:path/posix");
|
6
|
-
const semver_1 = require("semver");
|
7
6
|
const targets_1 = require("../../utils/targets");
|
8
7
|
const setup_ssr_1 = require("../setup-ssr/setup-ssr");
|
9
8
|
const validations_1 = require("../utils/validations");
|
@@ -26,17 +25,16 @@ const redundantExecutors = new Set([
|
|
26
25
|
'@nx/angular:webpack-server',
|
27
26
|
]);
|
28
27
|
async function convertToApplicationExecutor(tree, options) {
|
29
|
-
const { version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
30
28
|
let didAnySucceed = false;
|
31
29
|
if (options.project) {
|
32
30
|
(0, validations_1.validateProject)(tree, options.project);
|
33
|
-
didAnySucceed = await convertProjectTargets(tree, options.project,
|
31
|
+
didAnySucceed = await convertProjectTargets(tree, options.project, true);
|
34
32
|
}
|
35
33
|
else {
|
36
34
|
const projects = (0, devkit_1.getProjects)(tree);
|
37
35
|
for (const [projectName] of projects) {
|
38
36
|
devkit_1.logger.info(`Converting project "${projectName}"...`);
|
39
|
-
const success = await convertProjectTargets(tree, projectName
|
37
|
+
const success = await convertProjectTargets(tree, projectName);
|
40
38
|
if (success) {
|
41
39
|
devkit_1.logger.info(`Project "${projectName}" converted successfully.`);
|
42
40
|
}
|
@@ -52,7 +50,7 @@ async function convertToApplicationExecutor(tree, options) {
|
|
52
50
|
}
|
53
51
|
return didAnySucceed ? () => (0, devkit_1.installPackagesTask)(tree) : () => { };
|
54
52
|
}
|
55
|
-
async function convertProjectTargets(tree, projectName,
|
53
|
+
async function convertProjectTargets(tree, projectName, isProvidedProject = false) {
|
56
54
|
function warnIfProvided(message) {
|
57
55
|
if (isProvidedProject) {
|
58
56
|
devkit_1.logger.warn(message);
|
@@ -63,7 +61,7 @@ async function convertProjectTargets(tree, projectName, angularVersion, isProvid
|
|
63
61
|
warnIfProvided(`The provided project "${projectName}" is not an application. Skipping conversion.`);
|
64
62
|
return false;
|
65
63
|
}
|
66
|
-
const { buildTargetName, serverTargetName } = getTargetsToConvert(project.targets
|
64
|
+
const { buildTargetName, serverTargetName } = getTargetsToConvert(project.targets);
|
67
65
|
if (!buildTargetName) {
|
68
66
|
warnIfProvided(`The provided project "${projectName}" does not have any targets using on of the ` +
|
69
67
|
`'@angular-devkit/build-angular:browser', '@angular-devkit/build-angular:browser-esbuild', ` +
|
@@ -71,12 +69,20 @@ async function convertProjectTargets(tree, projectName, angularVersion, isProvid
|
|
71
69
|
return false;
|
72
70
|
}
|
73
71
|
const useNxExecutor = project.targets[buildTargetName].executor.startsWith('@nx/angular:');
|
74
|
-
|
75
|
-
|
76
|
-
|
72
|
+
let newExecutor;
|
73
|
+
if (useNxExecutor) {
|
74
|
+
newExecutor = '@nx/angular:application';
|
75
|
+
}
|
76
|
+
else {
|
77
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
78
|
+
newExecutor =
|
79
|
+
angularMajorVersion >= 20
|
80
|
+
? '@angular/build:application'
|
81
|
+
: '@angular-devkit/build-angular:application';
|
82
|
+
}
|
77
83
|
const buildTarget = project.targets[buildTargetName];
|
78
84
|
buildTarget.executor = newExecutor;
|
79
|
-
if (
|
85
|
+
if (buildTarget.outputs) {
|
80
86
|
buildTarget.outputs = buildTarget.outputs.map((output) => output === '{options.outputPath}' ? '{options.outputPath.base}' : output);
|
81
87
|
}
|
82
88
|
for (const [, options] of (0, targets_1.allTargetOptions)(buildTarget)) {
|
@@ -94,10 +100,7 @@ async function convertProjectTargets(tree, projectName, angularVersion, isProvid
|
|
94
100
|
options['polyfills'] = [options['polyfills']];
|
95
101
|
}
|
96
102
|
let outputPath = options['outputPath'];
|
97
|
-
if (
|
98
|
-
options['outputPath'] = outputPath?.replace(/\/browser\/?$/, '');
|
99
|
-
}
|
100
|
-
else if (typeof outputPath === 'string') {
|
103
|
+
if (typeof outputPath === 'string') {
|
101
104
|
if (!/\/browser\/?$/.test(outputPath)) {
|
102
105
|
devkit_1.logger.warn(`The output location of the browser build has been updated from "${outputPath}" to ` +
|
103
106
|
`"${(0, posix_1.join)(outputPath, 'browser')}". ` +
|
@@ -121,9 +124,6 @@ async function convertProjectTargets(tree, projectName, angularVersion, isProvid
|
|
121
124
|
}
|
122
125
|
}
|
123
126
|
// Delete removed options
|
124
|
-
if ((0, semver_1.lt)(angularVersion, '17.3.0')) {
|
125
|
-
delete options['deployUrl'];
|
126
|
-
}
|
127
127
|
delete options['vendorChunk'];
|
128
128
|
delete options['commonChunk'];
|
129
129
|
delete options['resourcesOutputPath'];
|
@@ -145,18 +145,34 @@ async function convertProjectTargets(tree, projectName, angularVersion, isProvid
|
|
145
145
|
}
|
146
146
|
const browserTsConfigJson = (0, devkit_1.readJson)(tree, browserTsConfigPath);
|
147
147
|
const serverTsConfigJson = (0, devkit_1.readJson)(tree, serverTsConfigPath);
|
148
|
+
const serverFiles = ['src/main.server.ts', 'src/server.ts'];
|
149
|
+
if (tree.exists((0, posix_1.join)(project.root, 'src/app/app.config.server.ts'))) {
|
150
|
+
serverFiles.push('src/app/app.config.server.ts');
|
151
|
+
}
|
148
152
|
const files = new Set([
|
149
153
|
...(browserTsConfigJson.files ?? []),
|
150
154
|
...(serverTsConfigJson.files ?? []),
|
151
155
|
]);
|
152
|
-
// Server
|
156
|
+
// Server files will be added later if needed by the setup-ssr generator
|
153
157
|
files.delete('server.ts');
|
154
|
-
|
158
|
+
files.delete('src/server.ts');
|
159
|
+
files.delete('src/main.server.ts');
|
160
|
+
if (files.size) {
|
161
|
+
browserTsConfigJson.files = Array.from(files);
|
162
|
+
}
|
163
|
+
else if (browserTsConfigJson.files) {
|
164
|
+
delete browserTsConfigJson.files;
|
165
|
+
}
|
155
166
|
browserTsConfigJson.compilerOptions ?? {};
|
156
167
|
browserTsConfigJson.compilerOptions.types = Array.from(new Set([
|
157
168
|
...(browserTsConfigJson.compilerOptions.types ?? []),
|
158
169
|
...(serverTsConfigJson.compilerOptions?.types ?? []),
|
159
170
|
]));
|
171
|
+
if (browserTsConfigJson.exclude?.length) {
|
172
|
+
const normalizeExclude = (exclude) => exclude.startsWith('./') ? exclude.slice(2) : exclude;
|
173
|
+
browserTsConfigJson.exclude = browserTsConfigJson.exclude.filter((exclude) => !serverFiles.includes(normalizeExclude(exclude)));
|
174
|
+
}
|
175
|
+
(0, devkit_1.writeJson)(tree, browserTsConfigPath, browserTsConfigJson);
|
160
176
|
// Delete server tsconfig
|
161
177
|
tree.delete(serverTsConfigPath);
|
162
178
|
}
|
@@ -189,11 +205,12 @@ async function convertProjectTargets(tree, projectName, angularVersion, isProvid
|
|
189
205
|
(0, devkit_1.updateProjectConfiguration)(tree, projectName, project);
|
190
206
|
return true;
|
191
207
|
}
|
192
|
-
function getTargetsToConvert(targets
|
208
|
+
function getTargetsToConvert(targets) {
|
193
209
|
let buildTargetName;
|
194
210
|
let serverTargetName;
|
195
211
|
for (const target of Object.keys(targets)) {
|
196
212
|
if (targets[target].executor === '@nx/angular:application' ||
|
213
|
+
targets[target].executor === '@angular/build:application' ||
|
197
214
|
targets[target].executor === '@angular-devkit/build-angular:application') {
|
198
215
|
devkit_1.logger.warn('The project is already using the application builder. Skipping conversion.');
|
199
216
|
return {};
|
@@ -201,10 +218,6 @@ function getTargetsToConvert(targets, angularVersion) {
|
|
201
218
|
// build target
|
202
219
|
if (executorsToConvert.has(targets[target].executor)) {
|
203
220
|
for (const [, options] of (0, targets_1.allTargetOptions)(targets[target])) {
|
204
|
-
if ((0, semver_1.lt)(angularVersion, '17.3.0') && options.deployUrl) {
|
205
|
-
devkit_1.logger.warn(`The project is using the "deployUrl" option which is not available in the application builder. Skipping conversion.`);
|
206
|
-
return {};
|
207
|
-
}
|
208
221
|
if (options.customWebpackConfig) {
|
209
222
|
devkit_1.logger.warn(`The project is using a custom webpack configuration which is not supported by the esbuild-based application executor. Skipping conversion.`);
|
210
223
|
return {};
|
@@ -13,7 +13,7 @@ async function directiveGenerator(tree, schema) {
|
|
13
13
|
symbolName: options.symbolName,
|
14
14
|
fileName: options.fileName,
|
15
15
|
standalone: options.standalone,
|
16
|
-
// Angular v19 or higher defaults to true, while
|
16
|
+
// Angular v19 or higher defaults to true, while lower versions default to false
|
17
17
|
setStandalone: (angularMajorVersion >= 19 && !options.standalone) ||
|
18
18
|
(angularMajorVersion < 19 && options.standalone),
|
19
19
|
tpl: '',
|
@@ -5,16 +5,21 @@ 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 selector_1 = require("../../utils/selector");
|
7
7
|
const validations_1 = require("../../utils/validations");
|
8
|
+
const version_utils_1 = require("../../utils/version-utils");
|
8
9
|
async function normalizeOptions(tree, options) {
|
10
|
+
const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
11
|
+
if (angularMajorVersion < 20) {
|
12
|
+
options.type ??= 'directive';
|
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:
|
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);
|
20
25
|
const { prefix } = (0, devkit_1.readProjectConfiguration)(tree, projectName);
|
@@ -12,11 +12,15 @@
|
|
12
12
|
"command": "nx g @nx/angular:directive mylib/src/lib/foo.directive.ts"
|
13
13
|
},
|
14
14
|
{
|
15
|
-
"description": "Generate a directive without providing the file extension. It results in the directive `
|
15
|
+
"description": "Generate a directive without providing the file extension. It results in the directive `Foo` at `mylib/src/lib/foo.ts`",
|
16
16
|
"command": "nx g @nx/angular:directive mylib/src/lib/foo"
|
17
17
|
},
|
18
18
|
{
|
19
|
-
"description": "Generate a directive with
|
19
|
+
"description": "Generate a directive with a given type/suffix. It results in the directive `FooDirective` at `mylib/src/lib/foo.directive.ts`",
|
20
|
+
"command": "nx g @nx/angular:directive mylib/src/lib/foo --type=directive"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"description": "Generate a directive with the exported symbol different from the file name. It results in the directive `Custom` at `mylib/src/lib/foo.ts`",
|
20
24
|
"command": "nx g @nx/angular:directive mylib/src/lib/foo --name=custom"
|
21
25
|
}
|
22
26
|
],
|
@@ -78,6 +82,10 @@
|
|
78
82
|
"default": false,
|
79
83
|
"description": "The declaring NgModule exports this directive."
|
80
84
|
},
|
85
|
+
"type": {
|
86
|
+
"type": "string",
|
87
|
+
"description": "Append a custom type to the directive's filename. It defaults to 'directive' for Angular versions below v20. For Angular v20 and above, no type is appended unless specified."
|
88
|
+
},
|
81
89
|
"skipFormat": {
|
82
90
|
"type": "boolean",
|
83
91
|
"default": false,
|
@@ -178,7 +178,7 @@
|
|
178
178
|
"x-priority": "important"
|
179
179
|
},
|
180
180
|
"serverRouting": {
|
181
|
-
"description": "Creates a server application using the Server Routing and App Engine APIs (Developer Preview). _Note: this is only supported in Angular versions
|
181
|
+
"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.",
|
182
182
|
"type": "boolean"
|
183
183
|
},
|
184
184
|
"typescriptConfiguration": {
|
@@ -29,7 +29,7 @@ function installAngularDevkitCoreIfMissing(tree, options) {
|
|
29
29
|
const packageVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, '@angular-devkit/core');
|
30
30
|
if (!packageVersion) {
|
31
31
|
const pkgVersions = (0, version_utils_1.versions)(tree);
|
32
|
-
const devkitVersion = (0, version_utils_1.
|
32
|
+
const devkitVersion = (0, version_utils_1.getInstalledAngularDevkitVersion)(tree) ??
|
33
33
|
pkgVersions.angularDevkitVersion;
|
34
34
|
try {
|
35
35
|
(0, devkit_1.ensurePackage)('@angular-devkit/core', devkitVersion);
|
@@ -1,7 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
3
|
-
|
4
|
-
|
2
|
+
"extends": "<%= rootTsConfig %>",
|
3
|
+
"compilerOptions": {},
|
4
|
+
"angularCompilerOptions": {
|
5
|
+
"enableI18nLegacyMessageIdFormat": false
|
5
6
|
},
|
6
7
|
"files": [],
|
7
8
|
"include": [],
|
@@ -9,6 +10,5 @@
|
|
9
10
|
{
|
10
11
|
"path": "./tsconfig.lib.json"
|
11
12
|
}
|
12
|
-
]
|
13
|
-
"extends": "<%= rootTsConfig %>"
|
13
|
+
]
|
14
14
|
}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
<% if (!skipModule) { %>export * from './lib/<%= libFileName
|
1
|
+
<% if (!skipModule) { %>export * from './lib/<%= libFileName %><%= moduleTypeSeparator %>module';<% } %><% if(routing) { %>
|
2
2
|
export * from './lib/lib.routes';<% } %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Route } from '@angular/router';
|
2
|
-
import { <%= libClassName %>
|
2
|
+
import { <%= libClassName %><%= componentType %> } from './<%= pathToComponent %><%= componentFileSuffix %>';
|
3
3
|
|
4
4
|
export const <%= libPropertyName %>Routes: Route[] = [
|
5
|
-
{ path: '', component: <%= libClassName %>
|
5
|
+
{ path: '', component: <%= libClassName %><%= componentType %> }
|
6
6
|
];
|
@@ -14,6 +14,7 @@ async function addStandaloneComponent(tree, { libraryOptions, componentOptions }
|
|
14
14
|
: `${componentOptions.name}/${componentOptions.name}`),
|
15
15
|
standalone: true,
|
16
16
|
export: true,
|
17
|
+
type: componentOptions.type,
|
17
18
|
skipFormat: true,
|
18
19
|
});
|
19
20
|
if (libraryOptions.routing) {
|
@@ -14,7 +14,12 @@ function createFiles(tree, options, project) {
|
|
14
14
|
: (0, devkit_1.joinPathFragments)(options.libraryOptions.fileName, options.libraryOptions.fileName);
|
15
15
|
const version = (0, version_utils_1.getInstalledAngularVersion)(tree);
|
16
16
|
const { major, minor } = (0, semver_1.parse)(version);
|
17
|
-
const
|
17
|
+
const componentType = options.componentOptions.type
|
18
|
+
? (0, devkit_1.names)(options.componentOptions.type).className
|
19
|
+
: '';
|
20
|
+
const componentFileSuffix = options.componentOptions.type
|
21
|
+
? `.${options.componentOptions.type}`
|
22
|
+
: '';
|
18
23
|
const substitutions = {
|
19
24
|
libName: options.libraryOptions.name,
|
20
25
|
libFileName: options.libraryOptions.fileName,
|
@@ -29,7 +34,9 @@ function createFiles(tree, options, project) {
|
|
29
34
|
importPath: options.libraryOptions.importPath,
|
30
35
|
rootOffset,
|
31
36
|
angularPeerDepVersion: `^${major}.${minor}.0`,
|
32
|
-
|
37
|
+
componentType,
|
38
|
+
componentFileSuffix,
|
39
|
+
moduleTypeSeparator: options.libraryOptions.moduleTypeSeparator,
|
33
40
|
tpl: '',
|
34
41
|
};
|
35
42
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '../files/base'), options.libraryOptions.projectRoot, substitutions);
|
@@ -39,7 +46,7 @@ function createFiles(tree, options, project) {
|
|
39
46
|
else {
|
40
47
|
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '../files/ng-module'), options.libraryOptions.projectRoot, substitutions);
|
41
48
|
if (options.libraryOptions.skipModule) {
|
42
|
-
tree.delete(
|
49
|
+
tree.delete(options.libraryOptions.modulePath);
|
43
50
|
}
|
44
51
|
}
|
45
52
|
if (!options.libraryOptions.routing) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Tree } from '@nx/devkit';
|
2
|
-
import { Schema } from '../schema';
|
3
|
-
import { NormalizedSchema } from './normalized-schema';
|
1
|
+
import { type Tree } from '@nx/devkit';
|
2
|
+
import type { Schema } from '../schema';
|
3
|
+
import type { NormalizedSchema } from './normalized-schema';
|
4
4
|
export declare function normalizeOptions(host: Tree, schema: Schema): Promise<NormalizedSchema>;
|
@@ -4,6 +4,7 @@ exports.normalizeOptions = normalizeOptions;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
5
5
|
const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
|
6
6
|
const test_runners_1 = require("../../../utils/test-runners");
|
7
|
+
const artifact_types_1 = require("../../utils/artifact-types");
|
7
8
|
async function normalizeOptions(host, schema) {
|
8
9
|
schema.standalone = schema.standalone ?? true;
|
9
10
|
// Create a schema with populated default values
|
@@ -35,7 +36,8 @@ async function normalizeOptions(host, schema) {
|
|
35
36
|
const parsedTags = options.tags
|
36
37
|
? options.tags.split(',').map((s) => s.trim())
|
37
38
|
: [];
|
38
|
-
const
|
39
|
+
const moduleTypeSeparator = (0, artifact_types_1.getModuleTypeSeparator)(host);
|
40
|
+
const modulePath = `${projectRoot}/src/lib/${fileName}${moduleTypeSeparator}module.ts`;
|
39
41
|
const ngCliSchematicLibRoot = projectName;
|
40
42
|
const allNormalizedOptions = {
|
41
43
|
...options,
|
@@ -53,8 +55,10 @@ async function normalizeOptions(host, schema) {
|
|
53
55
|
ngCliSchematicLibRoot,
|
54
56
|
skipTests: options.unitTestRunner === 'none' ? true : options.skipTests,
|
55
57
|
standaloneComponentName: `${(0, devkit_1.names)(projectNames.projectSimpleName).className}Component`,
|
58
|
+
moduleTypeSeparator,
|
56
59
|
};
|
57
60
|
const { displayBlock, inlineStyle, inlineTemplate, viewEncapsulation, changeDetection, style, skipTests, selector, skipSelector, flat, ...libraryOptions } = allNormalizedOptions;
|
61
|
+
const componentType = (0, artifact_types_1.getComponentType)(host);
|
58
62
|
return {
|
59
63
|
libraryOptions,
|
60
64
|
componentOptions: {
|
@@ -70,6 +74,7 @@ async function normalizeOptions(host, schema) {
|
|
70
74
|
selector,
|
71
75
|
skipSelector,
|
72
76
|
flat,
|
77
|
+
type: componentType,
|
73
78
|
},
|
74
79
|
};
|
75
80
|
}
|
@@ -36,6 +36,7 @@ export interface NormalizedSchema {
|
|
36
36
|
parsedTags: string[];
|
37
37
|
ngCliSchematicLibRoot: string;
|
38
38
|
standaloneComponentName: string;
|
39
|
+
moduleTypeSeparator: '-' | '.';
|
39
40
|
};
|
40
41
|
componentOptions: {
|
41
42
|
name: string;
|
@@ -50,5 +51,6 @@ export interface NormalizedSchema {
|
|
50
51
|
selector?: string;
|
51
52
|
skipSelector?: boolean;
|
52
53
|
flat?: boolean;
|
54
|
+
type?: string;
|
53
55
|
};
|
54
56
|
}
|
@@ -8,6 +8,7 @@ function setGeneratorDefaults(tree, options) {
|
|
8
8
|
nxJson.generators['@nx/angular:library'] = {
|
9
9
|
linter: options.libraryOptions.linter,
|
10
10
|
unitTestRunner: options.libraryOptions.unitTestRunner,
|
11
|
+
strict: !options.libraryOptions.strict ? false : undefined,
|
11
12
|
...(nxJson.generators['@nx/angular:library'] || {}),
|
12
13
|
};
|
13
14
|
(0, devkit_1.updateNxJson)(tree, nxJson);
|
@@ -0,0 +1,85 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.updateTsConfigFiles = updateTsConfigFiles;
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
5
|
+
const js_1 = require("@nx/js");
|
6
|
+
const configuration_1 = require("@nx/js/src/utils/typescript/configuration");
|
7
|
+
const semver_1 = require("semver");
|
8
|
+
const update_project_root_tsconfig_1 = require("../../utils/update-project-root-tsconfig");
|
9
|
+
const version_utils_1 = require("../../utils/version-utils");
|
10
|
+
function updateTsConfigFiles(tree, options) {
|
11
|
+
(0, js_1.extractTsConfigBase)(tree);
|
12
|
+
updateProjectConfig(tree, options);
|
13
|
+
updateProjectIvyConfig(tree, options);
|
14
|
+
(0, js_1.addTsConfigPath)(tree, options.importPath, [
|
15
|
+
(0, devkit_1.joinPathFragments)(options.projectRoot, './src', 'index.ts'),
|
16
|
+
]);
|
17
|
+
const compilerOptions = {
|
18
|
+
skipLibCheck: true,
|
19
|
+
experimentalDecorators: true,
|
20
|
+
importHelpers: true,
|
21
|
+
target: 'es2022',
|
22
|
+
...(options.strict
|
23
|
+
? {
|
24
|
+
strict: true,
|
25
|
+
noImplicitOverride: true,
|
26
|
+
noPropertyAccessFromIndexSignature: true,
|
27
|
+
noImplicitReturns: true,
|
28
|
+
noFallthroughCasesInSwitch: true,
|
29
|
+
}
|
30
|
+
: {}),
|
31
|
+
};
|
32
|
+
const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
33
|
+
if ((0, semver_1.lt)(angularVersion, '18.1.0')) {
|
34
|
+
compilerOptions.useDefineForClassFields = false;
|
35
|
+
}
|
36
|
+
if (angularMajorVersion >= 20) {
|
37
|
+
compilerOptions.module = 'preserve';
|
38
|
+
}
|
39
|
+
else {
|
40
|
+
compilerOptions.moduleResolution = 'bundler';
|
41
|
+
compilerOptions.module = 'es2022';
|
42
|
+
}
|
43
|
+
(0, devkit_1.updateJson)(tree, `${options.projectRoot}/tsconfig.json`, (json) => {
|
44
|
+
json.compilerOptions = {
|
45
|
+
...json.compilerOptions,
|
46
|
+
...compilerOptions,
|
47
|
+
};
|
48
|
+
json.compilerOptions = (0, configuration_1.getNeededCompilerOptionOverrides)(tree, json.compilerOptions, (0, js_1.getRootTsConfigFileName)(tree));
|
49
|
+
if (options.strict) {
|
50
|
+
json.angularCompilerOptions = {
|
51
|
+
...json.angularCompilerOptions,
|
52
|
+
strictInjectionParameters: true,
|
53
|
+
strictInputAccessModifiers: true,
|
54
|
+
typeCheckHostBindings: angularMajorVersion >= 20 ? true : undefined,
|
55
|
+
strictTemplates: true,
|
56
|
+
};
|
57
|
+
}
|
58
|
+
return json;
|
59
|
+
});
|
60
|
+
}
|
61
|
+
function updateProjectConfig(host, options) {
|
62
|
+
(0, devkit_1.updateJson)(host, `${options.projectRoot}/tsconfig.lib.json`, (json) => {
|
63
|
+
json.include = ['src/**/*.ts'];
|
64
|
+
json.exclude = [
|
65
|
+
...new Set([
|
66
|
+
...(json.exclude || []),
|
67
|
+
'jest.config.ts',
|
68
|
+
'src/**/*.test.ts',
|
69
|
+
'src/**/*.spec.ts',
|
70
|
+
]),
|
71
|
+
];
|
72
|
+
return json;
|
73
|
+
});
|
74
|
+
// tsconfig.json
|
75
|
+
(0, update_project_root_tsconfig_1.updateProjectRootTsConfig)(host, options.projectRoot, (0, js_1.getRelativePathToRootTsConfig)(host, options.projectRoot));
|
76
|
+
}
|
77
|
+
function updateProjectIvyConfig(host, options) {
|
78
|
+
if (options.buildable || options.publishable) {
|
79
|
+
return (0, devkit_1.updateJson)(host, `${options.projectRoot}/tsconfig.lib.prod.json`, (json) => {
|
80
|
+
json.angularCompilerOptions['compilationMode'] =
|
81
|
+
options.compilationMode === 'full' ? undefined : 'partial';
|
82
|
+
return json;
|
83
|
+
});
|
84
|
+
}
|
85
|
+
}
|
@@ -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
|
}
|