@nx/angular 17.0.2 → 17.0.4
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/LICENSE +1 -1
- package/README.md +9 -4
- package/esm2022/mf/mf.mjs +1 -1
- package/esm2022/src/runtime/nx/data-persistence.mjs +1 -1
- package/executors.d.ts +9 -2
- package/executors.js +7 -2
- package/executors.json +19 -9
- package/fesm2022/nx-angular-mf.mjs.map +1 -1
- package/fesm2022/nx-angular.mjs.map +1 -1
- package/generators.d.ts +1 -1
- package/generators.js +3 -1
- package/generators.json +7 -2
- package/migrations.json +451 -0
- package/ng-package.json +2 -2
- package/package.json +20 -26
- package/plugins/component-testing.d.ts +1 -26
- package/plugins/component-testing.js +15 -4
- package/src/builders/dev-server/dev-server.impl.d.ts +4 -0
- package/src/builders/dev-server/dev-server.impl.js +160 -0
- package/src/builders/{webpack-dev-server → dev-server}/lib/index.d.ts +1 -0
- package/src/builders/{webpack-dev-server → dev-server}/lib/index.js +1 -0
- package/src/builders/dev-server/lib/normalize-options.d.ts +2 -0
- package/src/builders/dev-server/lib/normalize-options.js +20 -0
- package/src/builders/dev-server/lib/validate-options.d.ts +2 -0
- package/src/builders/dev-server/lib/validate-options.js +22 -0
- package/src/builders/dev-server/schema.d.ts +39 -0
- package/src/builders/{webpack-dev-server → dev-server}/schema.json +42 -5
- package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.d.ts +1 -1
- package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +15 -9
- package/src/builders/utilities/module-federation.js +1 -1
- package/src/builders/webpack-browser/schema.d.ts +6 -2
- package/src/builders/webpack-browser/schema.json +15 -15
- package/src/builders/webpack-browser/webpack-browser.impl.js +8 -6
- package/src/builders/webpack-server/schema.d.ts +0 -1
- package/src/builders/webpack-server/schema.json +7 -20
- package/src/builders/webpack-server/validate-options.js +0 -7
- package/src/builders/webpack-server/webpack-server.impl.js +4 -9
- package/src/executors/application/application.impl.d.ts +3 -0
- package/src/executors/application/application.impl.js +37 -0
- package/src/executors/application/schema.d.ts +8 -0
- package/src/executors/application/schema.json +682 -0
- package/src/executors/application/utils/validate-options.d.ts +2 -0
- package/src/executors/application/utils/validate-options.js +52 -0
- package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +2 -3
- package/src/executors/browser-esbuild/browser-esbuild.impl.js +15 -8
- package/src/executors/browser-esbuild/schema.d.ts +3 -1
- package/src/executors/browser-esbuild/schema.json +38 -8
- package/src/executors/extract-i18n/extract-i18n.impl.d.ts +3 -0
- package/src/executors/extract-i18n/extract-i18n.impl.js +43 -0
- package/src/executors/extract-i18n/schema.d.ts +8 -0
- package/src/executors/extract-i18n/schema.json +45 -0
- package/src/executors/module-federation-dev-server/lib/build-static-remotes.d.ts +4 -0
- package/src/executors/module-federation-dev-server/lib/build-static-remotes.js +56 -0
- package/src/executors/module-federation-dev-server/lib/index.d.ts +5 -0
- package/src/executors/module-federation-dev-server/lib/index.js +8 -0
- package/src/executors/module-federation-dev-server/lib/normalize-options.d.ts +2 -0
- package/src/executors/module-federation-dev-server/lib/normalize-options.js +23 -0
- package/src/executors/module-federation-dev-server/lib/parse-static-remotes-config.d.ts +11 -0
- package/src/executors/module-federation-dev-server/lib/parse-static-remotes-config.js +18 -0
- package/src/executors/module-federation-dev-server/lib/start-dev-remotes.d.ts +9 -0
- package/src/executors/module-federation-dev-server/lib/start-dev-remotes.js +29 -0
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.d.ts +9 -0
- package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +46 -0
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +4 -0
- package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +115 -0
- package/src/{builders → executors}/module-federation-dev-server/schema.d.ts +25 -7
- package/src/{builders → executors}/module-federation-dev-server/schema.json +31 -6
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.d.ts +3 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +34 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.transform.js +6 -4
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.transform.js +25 -13
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ngc → pre-v17/ngc}/compile-source-files.d.ts +1 -2
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ngc → pre-v17/ngc}/compile-source-files.js +14 -9
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.d.ts +5 -10
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.js +39 -86
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.d.ts +2 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.js +12 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.d.ts +8 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.js +12 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.d.ts +8 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.js +18 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.d.ts +8 -0
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +285 -0
- package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +5 -17
- package/src/executors/ng-packagr-lite/schema.json +1 -1
- package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +5 -3
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.d.ts +3 -0
- package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +28 -0
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +1 -1
- package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +13 -6
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.d.ts +5 -10
- package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +39 -86
- package/src/executors/package/package.impl.d.ts +1 -1
- package/src/executors/package/package.impl.js +5 -15
- package/src/executors/package/schema.json +3 -3
- package/src/executors/utilities/buildable-libs.d.ts +6 -0
- package/src/executors/{browser-esbuild/lib → utilities}/buildable-libs.js +3 -4
- package/src/executors/utilities/esbuild-extensions.d.ts +10 -0
- package/src/executors/utilities/esbuild-extensions.js +50 -0
- package/src/executors/utilities/module-loader.d.ts +15 -0
- package/src/executors/utilities/module-loader.js +52 -0
- package/src/executors/utilities/ng-compiler-cli.d.ts +1 -0
- package/src/executors/utilities/ng-compiler-cli.js +8 -0
- package/src/executors/utilities/ng-packagr/stylesheet-processor.d.ts +49 -0
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.d.ts +2 -0
- package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +16 -0
- package/src/executors/utilities/ng-packagr/stylesheet-processor.js +209 -0
- package/src/executors/utilities/ng-packagr/tailwindcss.d.ts +7 -0
- package/src/executors/utilities/{tailwindcss.js → ng-packagr/tailwindcss.js} +5 -22
- package/src/executors/utilities/patch-builder-context.d.ts +3 -0
- package/src/executors/utilities/patch-builder-context.js +41 -0
- package/src/executors/utilities/typescript.js +1 -1
- package/src/generators/add-linting/add-linting.d.ts +1 -1
- package/src/generators/add-linting/add-linting.js +9 -15
- package/src/generators/add-linting/lib/add-angular-eslint-dependencies.d.ts +2 -2
- package/src/generators/add-linting/lib/add-angular-eslint-dependencies.js +9 -5
- package/src/generators/add-linting/lib/buildable-project.d.ts +2 -0
- package/src/generators/add-linting/lib/buildable-project.js +9 -0
- package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
- package/src/generators/add-linting/schema.json +1 -1
- package/src/generators/application/application.js +19 -17
- package/src/generators/application/files/base/tsconfig.app.json__tpl__ +1 -1
- package/src/generators/application/files/base/tsconfig.json__tpl__ +6 -2
- package/src/generators/application/files/ng-module/src/app/app.component.spec.ts__tpl__ +3 -1
- package/src/generators/application/files/ng-module/src/app/app.component.ts__tpl__ +4 -2
- package/src/generators/application/files/ng-module/src/app/app.module.ts__tpl__ +1 -1
- package/src/generators/application/files/ng-module/src/app/nx-welcome.component.ts__tpl__ +53 -14
- package/src/generators/application/files/ng-module/src/main.ts__tpl__ +2 -8
- package/src/generators/application/files/standalone-components/src/app/app.component.spec.ts__tpl__ +6 -4
- package/src/generators/application/files/standalone-components/src/app/app.component.ts__tpl__ +4 -2
- package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +3 -3
- package/src/generators/application/files/standalone-components/src/app/nx-welcome.component.ts__tpl__ +53 -14
- package/src/generators/application/files/standalone-components/src/main.ts__tpl__ +4 -8
- package/src/generators/application/lib/add-e2e.js +24 -8
- package/src/generators/application/lib/add-unit-test-runner.js +5 -20
- package/src/generators/application/lib/create-files.js +14 -10
- package/src/generators/application/lib/create-project.d.ts +1 -1
- package/src/generators/application/lib/create-project.js +48 -38
- package/src/generators/application/lib/index.d.ts +1 -0
- package/src/generators/application/lib/index.js +1 -0
- package/src/generators/application/lib/normalize-options.d.ts +1 -1
- package/src/generators/application/lib/normalize-options.js +28 -6
- package/src/generators/application/lib/normalized-schema.d.ts +5 -0
- package/src/generators/application/lib/set-generator-defaults.d.ts +3 -0
- package/src/generators/application/lib/set-generator-defaults.js +17 -0
- package/src/generators/application/lib/update-editor-tsconfig.d.ts +1 -1
- package/src/generators/application/lib/update-editor-tsconfig.js +11 -14
- package/src/generators/application/schema.d.ts +1 -0
- package/src/generators/application/schema.json +18 -10
- package/src/generators/component/component.js +4 -1
- package/src/generators/component/files/__fileName__.spec.ts__tpl__ +2 -3
- package/src/generators/component/files/__fileName__.ts__tpl__ +8 -2
- package/src/generators/component/lib/component.js +1 -1
- package/src/generators/component/lib/index.d.ts +1 -1
- package/src/generators/component/lib/index.js +1 -1
- package/src/generators/component/lib/normalize-options.js +3 -2
- package/src/generators/component/lib/set-generator-defaults.d.ts +3 -0
- package/src/generators/component/lib/set-generator-defaults.js +14 -0
- package/src/generators/component/schema.d.ts +3 -3
- package/src/generators/component/schema.json +4 -4
- package/src/generators/component-cypress-spec/files/__componentFileName__.__fileExt__ +13 -8
- package/src/generators/component-cypress-spec/schema.json +1 -1
- package/src/generators/component-story/files/__componentFileName__.stories.ts__tmpl__ +2 -2
- package/src/generators/component-test/component-test.d.ts +1 -1
- package/src/generators/component-test/component-test.js +8 -3
- package/src/generators/component-test/files/__componentFileName__.cy.ts__tpl__ +9 -11
- package/src/generators/component-test/schema.json +1 -1
- package/src/generators/convert-to-application-executor/convert-to-application-executor.d.ts +4 -0
- package/src/generators/convert-to-application-executor/convert-to-application-executor.js +242 -0
- package/src/generators/convert-to-application-executor/schema.d.ts +4 -0
- package/src/generators/convert-to-application-executor/schema.json +26 -0
- package/src/generators/convert-to-with-mf/convert-to-with-mf.js +3 -1
- package/src/generators/convert-to-with-mf/lib/write-new-webpack-config.js +3 -2
- package/src/generators/convert-to-with-mf/schema.d.ts +1 -0
- package/src/generators/convert-to-with-mf/schema.json +6 -0
- package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts +2 -1
- package/src/generators/cypress-component-configuration/cypress-component-configuration.js +43 -24
- package/src/generators/directive/directive.js +0 -1
- package/src/generators/directive/files/__fileName__.ts__tpl__ +1 -3
- package/src/generators/directive/lib/index.d.ts +0 -1
- package/src/generators/directive/lib/index.js +0 -1
- package/src/generators/directive/lib/normalize-options.js +3 -1
- package/src/generators/directive/schema.d.ts +3 -3
- package/src/generators/directive/schema.json +4 -4
- package/src/generators/federate-module/federate-module.js +1 -0
- package/src/generators/federate-module/lib/add-remote.d.ts +1 -1
- package/src/generators/federate-module/lib/add-remote.js +2 -11
- package/src/generators/federate-module/schema.json +10 -10
- package/src/generators/host/files/common/v17+/src/main.server.ts__tmpl__ +67 -0
- package/src/generators/host/files/ts/webpack.server.config.ts__tmpl__ +2 -2
- package/src/generators/host/host.js +8 -9
- package/src/generators/host/lib/index.d.ts +1 -1
- package/src/generators/host/lib/index.js +1 -1
- package/src/generators/host/lib/update-ssr-setup.d.ts +3 -0
- package/src/generators/host/lib/{add-ssr.js → update-ssr-setup.js} +8 -14
- package/src/generators/host/schema.json +6 -6
- package/src/generators/init/init.d.ts +2 -2
- package/src/generators/init/init.js +19 -137
- package/src/generators/init/schema.d.ts +1 -9
- package/src/generators/init/schema.json +8 -59
- package/src/generators/library/files/ng-module/src/lib/lib.routes.ts__tpl__ +1 -1
- package/src/generators/library/files/standalone-components/src/lib/lib.routes.ts__tpl__ +1 -1
- package/src/generators/library/lib/add-load-children.js +2 -2
- package/src/generators/library/lib/add-project.js +24 -22
- package/src/generators/library/lib/add-standalone-component.d.ts +2 -2
- package/src/generators/library/lib/add-standalone-component.js +5 -4
- package/src/generators/library/lib/normalize-options.js +2 -5
- package/src/generators/library/lib/set-generator-defaults.d.ts +3 -0
- package/src/generators/library/lib/set-generator-defaults.js +15 -0
- package/src/generators/library/lib/update-tsconfig.js +3 -3
- package/src/generators/library/library.js +15 -27
- package/src/generators/library/schema.d.ts +1 -0
- package/src/generators/library/schema.json +13 -13
- package/src/generators/library-secondary-entry-point/files/src/index.ts__tmpl__ +1 -5
- package/src/generators/library-secondary-entry-point/lib/index.d.ts +0 -1
- package/src/generators/library-secondary-entry-point/lib/index.js +0 -1
- package/src/generators/library-secondary-entry-point/library-secondary-entry-point.js +3 -2
- package/src/generators/library-secondary-entry-point/schema.d.ts +1 -0
- package/src/generators/library-secondary-entry-point/schema.json +9 -3
- package/src/generators/move/schema.json +1 -1
- package/src/generators/ng-add/migrate-from-angular-cli.js +1 -1
- package/src/generators/ng-add/migrators/projects/app.migrator.js +50 -7
- package/src/generators/ng-add/migrators/projects/e2e.migrator.js +31 -23
- package/src/generators/ng-add/ng-add.js +1 -8
- package/src/generators/ng-add/schema.json +1 -1
- package/src/generators/ng-add/utilities/workspace.d.ts +1 -1
- package/src/generators/ng-add/utilities/workspace.js +9 -16
- package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +1 -1
- package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +1 -1
- package/src/generators/ngrx/lib/generate-files.js +1 -10
- package/src/generators/ngrx/lib/validate-options.js +0 -23
- package/src/generators/ngrx/schema.json +3 -3
- package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +1 -1
- package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +1 -1
- package/src/generators/ngrx-feature-store/lib/generate-files.js +1 -12
- package/src/generators/ngrx-feature-store/lib/validate-options.js +0 -22
- package/src/generators/ngrx-feature-store/schema.json +3 -3
- package/src/generators/ngrx-root-store/lib/normalize-options.js +1 -1
- package/src/generators/ngrx-root-store/lib/validate-options.js +0 -15
- package/src/generators/ngrx-root-store/schema.json +2 -2
- package/src/generators/pipe/files/__fileName__.ts__tpl__ +0 -2
- package/src/generators/pipe/lib/index.d.ts +0 -1
- package/src/generators/pipe/lib/index.js +0 -1
- package/src/generators/pipe/lib/normalize-options.js +1 -0
- package/src/generators/pipe/pipe.js +0 -1
- package/src/generators/pipe/schema.d.ts +3 -3
- package/src/generators/pipe/schema.json +4 -4
- package/src/generators/remote/files/base-ts/webpack.server.config.ts__tmpl__ +2 -2
- package/src/generators/remote/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +1 -3
- package/src/generators/remote/files/common/v17+/src/main.server.ts__tmpl__ +73 -0
- package/src/generators/remote/lib/index.d.ts +1 -1
- package/src/generators/remote/lib/index.js +1 -1
- package/src/generators/remote/lib/{add-ssr.d.ts → update-ssr-setup.d.ts} +1 -1
- package/src/generators/remote/lib/{add-ssr.js → update-ssr-setup.js} +9 -13
- package/src/generators/remote/remote.js +7 -9
- package/src/generators/remote/schema.json +6 -6
- package/src/generators/scam/lib/convert-component-to-scam.js +2 -1
- package/src/generators/scam/schema.d.ts +3 -3
- package/src/generators/scam/schema.json +2 -2
- package/src/generators/scam-directive/lib/convert-directive-to-scam.js +2 -1
- package/src/generators/scam-directive/scam-directive.js +3 -1
- package/src/generators/scam-directive/schema.d.ts +4 -3
- package/src/generators/scam-directive/schema.json +8 -2
- package/src/generators/scam-pipe/lib/convert-pipe-to-scam.js +2 -1
- package/src/generators/scam-pipe/scam-pipe.js +3 -1
- package/src/generators/scam-pipe/schema.d.ts +4 -3
- package/src/generators/scam-pipe/schema.json +8 -2
- package/src/generators/scam-to-standalone/scam-to-standalone.js +0 -7
- package/src/generators/scam-to-standalone/schema.json +2 -2
- package/src/generators/setup-mf/files/host-files/app.component.spec.ts__tmpl__ +3 -1
- package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +12 -0
- package/src/generators/setup-mf/files/ts-webpack/tsconfig.lint.json__tmpl__ +12 -0
- package/src/generators/setup-mf/files/ts-webpack/webpack.config.ts__tmpl__ +1 -1
- package/src/generators/setup-mf/files/ts-webpack/webpack.prod.config.ts__tmpl__ +12 -12
- package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +13 -1
- package/src/generators/setup-mf/lib/add-cypress-workaround.js +14 -4
- package/src/generators/setup-mf/lib/add-remote-entry.js +2 -11
- package/src/generators/setup-mf/lib/add-remote-to-host.js +1 -1
- package/src/generators/setup-mf/lib/fix-bootstrap.js +10 -18
- package/src/generators/setup-mf/lib/generate-config.js +3 -0
- package/src/generators/setup-mf/lib/index.d.ts +1 -1
- package/src/generators/setup-mf/lib/index.js +1 -1
- package/src/generators/setup-mf/lib/normalize-options.js +2 -1
- package/src/generators/setup-mf/lib/remove-dead-code-from-remote.js +10 -10
- package/src/generators/setup-mf/lib/setup-serve-target.js +1 -1
- package/src/generators/setup-mf/lib/update-host-app-routes.js +2 -2
- package/src/generators/{pipe/lib/validate-options.d.ts → setup-mf/lib/update-tsconfig.d.ts} +1 -1
- package/src/generators/setup-mf/lib/update-tsconfig.js +19 -0
- package/src/generators/setup-mf/schema.d.ts +1 -0
- package/src/generators/setup-mf/schema.json +8 -3
- package/src/generators/setup-mf/setup-mf.js +1 -7
- package/src/generators/setup-ssr/files/ngmodule/base/src/__main__ +1 -1
- package/src/generators/setup-ssr/files/server/application-builder/__serverFileName__ +56 -0
- package/src/generators/setup-ssr/files/{ngmodule/base → server/server-builder/pre-v17}/__serverFileName__ +7 -8
- package/src/generators/setup-ssr/files/{standalone → server/server-builder/v17+}/__serverFileName__ +25 -16
- package/src/generators/setup-ssr/lib/add-dependencies.d.ts +2 -0
- package/src/generators/setup-ssr/lib/add-dependencies.js +36 -0
- package/src/generators/setup-ssr/lib/add-hydration.js +11 -5
- package/src/generators/setup-ssr/lib/add-server-file.d.ts +3 -0
- package/src/generators/setup-ssr/lib/add-server-file.js +31 -0
- package/src/generators/setup-ssr/lib/constants.d.ts +3 -0
- package/src/generators/setup-ssr/lib/constants.js +6 -0
- package/src/generators/setup-ssr/lib/generate-files.d.ts +1 -1
- package/src/generators/setup-ssr/lib/generate-files.js +11 -16
- package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts +4 -0
- package/src/generators/setup-ssr/lib/generate-server-ts-config.js +29 -0
- package/src/generators/setup-ssr/lib/index.d.ts +4 -0
- package/src/generators/setup-ssr/lib/index.js +4 -0
- package/src/generators/setup-ssr/lib/normalize-options.js +7 -1
- package/src/generators/setup-ssr/lib/set-router-initial-navigation.d.ts +3 -0
- package/src/generators/setup-ssr/lib/set-router-initial-navigation.js +93 -0
- package/src/generators/setup-ssr/lib/update-project-config.d.ts +2 -1
- package/src/generators/setup-ssr/lib/update-project-config.js +46 -13
- package/src/generators/setup-ssr/lib/validate-options.js +15 -2
- package/src/generators/setup-ssr/schema.json +4 -4
- package/src/generators/setup-ssr/setup-ssr.js +18 -12
- package/src/generators/setup-tailwind/schema.json +1 -1
- package/src/generators/stories/schema.json +1 -1
- package/src/generators/stories/stories.js +2 -2
- package/src/generators/storybook-configuration/lib/generate-stories.js +6 -4
- package/src/generators/storybook-configuration/lib/generate-storybook-configuration.js +3 -1
- package/src/generators/storybook-configuration/schema.d.ts +1 -1
- package/src/generators/storybook-configuration/schema.json +7 -7
- package/src/generators/storybook-configuration/storybook-configuration.js +8 -5
- package/src/generators/utils/add-jest.d.ts +8 -0
- package/src/generators/utils/add-jest.js +36 -0
- package/src/generators/utils/add-mf-env-to-inputs.d.ts +2 -0
- package/src/generators/utils/add-mf-env-to-inputs.js +27 -0
- package/src/generators/utils/dependencies.js +1 -2
- package/src/generators/utils/ensure-angular-dependencies.d.ts +2 -0
- package/src/generators/utils/ensure-angular-dependencies.js +35 -0
- package/src/generators/utils/export-scam.js +2 -2
- package/src/generators/utils/project.d.ts +0 -1
- package/src/generators/utils/project.js +2 -29
- package/src/generators/utils/selector.d.ts +2 -2
- package/src/generators/utils/selector.js +11 -4
- package/src/generators/utils/testing.js +24 -1
- package/src/generators/utils/update-app-editor-tsconfig-excluded-files.d.ts +2 -0
- package/src/generators/utils/update-app-editor-tsconfig-excluded-files.js +23 -0
- package/src/generators/utils/update-project-root-tsconfig.d.ts +3 -0
- package/src/generators/utils/update-project-root-tsconfig.js +26 -0
- package/src/generators/utils/validations.d.ts +0 -1
- package/src/generators/utils/validations.js +1 -14
- package/src/generators/utils/version-utils.d.ts +2 -2
- package/src/generators/utils/version-utils.js +3 -3
- package/src/migrations/update-17-1-0/browser-target-to-build-target.d.ts +3 -0
- package/src/migrations/update-17-1-0/browser-target-to-build-target.js +50 -0
- package/src/migrations/update-17-1-0/replace-nguniversal-builders.d.ts +2 -0
- package/src/migrations/update-17-1-0/replace-nguniversal-builders.js +75 -0
- package/src/migrations/update-17-1-0/replace-nguniversal-engines.d.ts +2 -0
- package/src/migrations/update-17-1-0/replace-nguniversal-engines.js +183 -0
- package/src/migrations/update-17-1-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-17-1-0/update-angular-cli.js +23 -0
- package/src/migrations/update-17-1-0/update-zone-js-deep-import.d.ts +2 -0
- package/src/migrations/update-17-1-0/update-zone-js-deep-import.js +37 -0
- package/src/migrations/update-17-2-0/rename-webpack-dev-server.d.ts +2 -0
- package/src/migrations/update-17-2-0/rename-webpack-dev-server.js +40 -0
- package/src/migrations/update-17-3-0/add-autoprefixer-dependency.d.ts +2 -0
- package/src/migrations/update-17-3-0/add-autoprefixer-dependency.js +26 -0
- package/src/migrations/update-17-3-0/add-browser-sync-dependency.d.ts +2 -0
- package/src/migrations/update-17-3-0/add-browser-sync-dependency.js +26 -0
- package/src/migrations/update-17-3-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-17-3-0/update-angular-cli.js +23 -0
- package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.d.ts +2 -0
- package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.js +26 -0
- package/src/migrations/update-18-1-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-18-1-0/update-angular-cli.js +23 -0
- package/src/migrations/update-18-1-1/fix-target-defaults-inputs.d.ts +2 -0
- package/src/migrations/update-18-1-1/fix-target-defaults-inputs.js +53 -0
- package/src/migrations/update-18-2-0/update-angular-cli.d.ts +3 -0
- package/src/migrations/update-18-2-0/update-angular-cli.js +23 -0
- package/src/utils/backward-compatible-versions.d.ts +6 -4
- package/src/utils/backward-compatible-versions.js +20 -22
- package/src/utils/{public-api.d.ts → index.d.ts} +5 -0
- package/src/utils/{public-api.js → index.js} +5 -0
- package/src/utils/mf/utils.js +7 -0
- package/src/utils/mf/with-module-federation-ssr.js +3 -0
- package/src/utils/mf/with-module-federation.js +3 -0
- package/src/utils/nx-devkit/ast-utils.js +4 -2
- package/src/utils/nx-devkit/testing.js +27 -31
- package/src/utils/targets.d.ts +2 -0
- package/src/utils/targets.js +17 -0
- package/src/utils/version-utils.d.ts +3 -3
- package/src/utils/versions.d.ts +9 -11
- package/src/utils/versions.js +10 -12
- package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.d.ts +0 -5
- package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.js +0 -136
- package/src/builders/webpack-browser/validate-options.d.ts +0 -2
- package/src/builders/webpack-browser/validate-options.js +0 -40
- package/src/builders/webpack-dev-server/lib/normalize-options.d.ts +0 -2
- package/src/builders/webpack-dev-server/lib/normalize-options.js +0 -14
- package/src/builders/webpack-dev-server/schema.d.ts +0 -21
- package/src/builders/webpack-dev-server/webpack-dev-server.impl.d.ts +0 -4
- package/src/builders/webpack-dev-server/webpack-dev-server.impl.js +0 -105
- package/src/executors/browser-esbuild/lib/buildable-libs.d.ts +0 -9
- package/src/executors/browser-esbuild/lib/validate-options.d.ts +0 -2
- package/src/executors/browser-esbuild/lib/validate-options.js +0 -40
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.d.ts +0 -16
- package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.js +0 -175
- package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.d.ts +0 -15
- package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.js +0 -197
- package/src/executors/utilities/tailwindcss.d.ts +0 -7
- package/src/generators/application/files/tsconfig.editor.json__tpl__ +0 -5
- package/src/generators/application/files/v14/.browserlistrc__tpl__ +0 -16
- package/src/generators/application/files/v14/src/environments/environment.prod.ts__tpl__ +0 -3
- package/src/generators/application/files/v14/src/environments/environment.ts__tpl__ +0 -16
- package/src/generators/application/files/v14/src/polyfills.ts__tpl__ +0 -53
- package/src/generators/component/lib/validate-options.d.ts +0 -3
- package/src/generators/component/lib/validate-options.js +0 -8
- package/src/generators/directive/lib/validate-options.d.ts +0 -3
- package/src/generators/directive/lib/validate-options.js +0 -8
- package/src/generators/host/lib/add-ssr.d.ts +0 -3
- package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.d.ts +0 -3
- package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.js +0 -15
- package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
- package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
- package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
- package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
- package/src/generators/pipe/lib/validate-options.js +0 -8
- package/src/generators/setup-mf/lib/set-tsconfig-target.d.ts +0 -3
- package/src/generators/setup-mf/lib/set-tsconfig-target.js +0 -16
- package/src/generators/setup-ssr/files/ngmodule/v14/src/__main__ +0 -11
- package/src/generators/utils/create-ts-config.d.ts +0 -8
- package/src/generators/utils/create-ts-config.js +0 -35
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.transform.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.transform.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.transform.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.transform.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/options.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/options.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/package.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/package.di.js +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.di.d.ts +0 -0
- /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.di.js +0 -0
- /package/src/generators/host/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
- /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
- /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
- /package/src/generators/setup-ssr/files/{base → root}/tsconfig.server.json__tpl__ +0 -0
|
@@ -3,13 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.remoteInternal = exports.remote = void 0;
|
|
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
|
-
const semver_1 = require("semver");
|
|
7
6
|
const test_runners_1 = require("../../utils/test-runners");
|
|
8
7
|
const application_1 = require("../application/application");
|
|
9
8
|
const setup_mf_1 = require("../setup-mf/setup-mf");
|
|
10
|
-
const version_utils_1 = require("../utils/version-utils");
|
|
11
9
|
const lib_1 = require("./lib");
|
|
12
10
|
const versions_1 = require("@nx/js/src/utils/versions");
|
|
11
|
+
const add_mf_env_to_inputs_1 = require("../utils/add-mf-env-to-inputs");
|
|
13
12
|
async function remote(tree, options) {
|
|
14
13
|
return await remoteInternal(tree, {
|
|
15
14
|
projectNameAndRootFormat: 'derived',
|
|
@@ -18,12 +17,8 @@ async function remote(tree, options) {
|
|
|
18
17
|
}
|
|
19
18
|
exports.remote = remote;
|
|
20
19
|
async function remoteInternal(tree, schema) {
|
|
21
|
-
const installedAngularVersionInfo = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
22
|
-
if ((0, semver_1.lt)(installedAngularVersionInfo.version, '14.1.0') && schema.standalone) {
|
|
23
|
-
throw new Error((0, devkit_1.stripIndents) `The "standalone" option is only supported in Angular >= 14.1.0. You are currently using ${installedAngularVersionInfo.version}.
|
|
24
|
-
You can resolve this error by removing the "standalone" option or by migrating to Angular 14.1.0.`);
|
|
25
|
-
}
|
|
26
20
|
const { typescriptConfiguration = true, ...options } = schema;
|
|
21
|
+
options.standalone = options.standalone ?? true;
|
|
27
22
|
const projects = (0, devkit_1.getProjects)(tree);
|
|
28
23
|
if (options.host && !projects.has(options.host)) {
|
|
29
24
|
throw new Error(`The name of the application to be used as the host app does not exist. (${options.host})`);
|
|
@@ -39,10 +34,11 @@ async function remoteInternal(tree, schema) {
|
|
|
39
34
|
const port = options.port ?? (0, lib_1.findNextAvailablePort)(tree);
|
|
40
35
|
const appInstallTask = await (0, application_1.applicationGenerator)(tree, {
|
|
41
36
|
...options,
|
|
42
|
-
standalone: options.standalone
|
|
37
|
+
standalone: options.standalone,
|
|
43
38
|
routing: true,
|
|
44
39
|
port,
|
|
45
40
|
skipFormat: true,
|
|
41
|
+
bundler: 'webpack',
|
|
46
42
|
});
|
|
47
43
|
const skipE2E = !options.e2eTestRunner || options.e2eTestRunner === test_runners_1.E2eTestRunner.None;
|
|
48
44
|
await (0, setup_mf_1.setupMf)(tree, {
|
|
@@ -58,13 +54,14 @@ async function remoteInternal(tree, schema) {
|
|
|
58
54
|
standalone: options.standalone,
|
|
59
55
|
prefix: options.prefix,
|
|
60
56
|
typescriptConfiguration,
|
|
57
|
+
setParserOptionsProject: options.setParserOptionsProject,
|
|
61
58
|
});
|
|
62
59
|
const installSwcHelpersTask = (0, devkit_1.addDependenciesToPackageJson)(tree, {}, {
|
|
63
60
|
'@swc/helpers': versions_1.swcHelpersVersion,
|
|
64
61
|
});
|
|
65
62
|
let installTasks = [appInstallTask, installSwcHelpersTask];
|
|
66
63
|
if (options.ssr) {
|
|
67
|
-
let ssrInstallTask = await (0, lib_1.
|
|
64
|
+
let ssrInstallTask = await (0, lib_1.updateSsrSetup)(tree, {
|
|
68
65
|
appName: remoteProjectName,
|
|
69
66
|
port,
|
|
70
67
|
typescriptConfiguration,
|
|
@@ -72,6 +69,7 @@ async function remoteInternal(tree, schema) {
|
|
|
72
69
|
});
|
|
73
70
|
installTasks.push(ssrInstallTask);
|
|
74
71
|
}
|
|
72
|
+
(0, add_mf_env_to_inputs_1.addMfEnvToTargetDefaultInputs)(tree);
|
|
75
73
|
if (!options.skipFormat) {
|
|
76
74
|
await (0, devkit_1.formatFiles)(tree);
|
|
77
75
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
3
|
"$id": "NxMFRemote",
|
|
4
4
|
"cli": "nx",
|
|
5
5
|
"title": "Nx Module Federation Remote App",
|
|
@@ -55,15 +55,15 @@
|
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
"value": "scss",
|
|
58
|
-
"label": "SASS(.scss) [
|
|
58
|
+
"label": "SASS(.scss) [ https://sass-lang.com ]"
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"value": "sass",
|
|
62
|
-
"label": "SASS(.sass) [
|
|
62
|
+
"label": "SASS(.sass) [ https://sass-lang.com ]"
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
"value": "less",
|
|
66
|
-
"label": "LESS [
|
|
66
|
+
"label": "LESS [ https://lesscss.org ]"
|
|
67
67
|
}
|
|
68
68
|
]
|
|
69
69
|
}
|
|
@@ -158,9 +158,9 @@
|
|
|
158
158
|
"x-priority": "internal"
|
|
159
159
|
},
|
|
160
160
|
"standalone": {
|
|
161
|
-
"description": "Whether to generate a remote application with standalone components.
|
|
161
|
+
"description": "Whether to generate a remote application with standalone components.",
|
|
162
162
|
"type": "boolean",
|
|
163
|
-
"default":
|
|
163
|
+
"default": true
|
|
164
164
|
},
|
|
165
165
|
"ssr": {
|
|
166
166
|
"description": "Whether to configure SSR for the remote application to be consumed by a host application using SSR.",
|
|
@@ -19,15 +19,15 @@ export interface Schema {
|
|
|
19
19
|
export?: boolean;
|
|
20
20
|
skipFormat?: boolean;
|
|
21
21
|
/**
|
|
22
|
-
* @deprecated Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx
|
|
22
|
+
* @deprecated Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx v19.
|
|
23
23
|
*/
|
|
24
24
|
flat?: boolean;
|
|
25
25
|
/**
|
|
26
|
-
* @deprecated Provide the `directory` option instead. It will be removed in Nx
|
|
26
|
+
* @deprecated Provide the `directory` option instead. It will be removed in Nx v19.
|
|
27
27
|
*/
|
|
28
28
|
path?: string;
|
|
29
29
|
/**
|
|
30
|
-
* @deprecated Provide the `directory` option instead. The project will be determined from the directory provided. It will be removed in Nx
|
|
30
|
+
* @deprecated Provide the `directory` option instead. The project will be determined from the directory provided. It will be removed in Nx v19.
|
|
31
31
|
*/
|
|
32
32
|
project?: string;
|
|
33
33
|
}
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"$source": "projectName"
|
|
41
41
|
},
|
|
42
42
|
"x-dropdown": "projects",
|
|
43
|
-
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx
|
|
43
|
+
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx v19."
|
|
44
44
|
},
|
|
45
45
|
"displayBlock": {
|
|
46
46
|
"description": "Specifies if the style will contain `:host { display: block; }`.",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"type": "boolean",
|
|
95
95
|
"description": "Create the new files at the top level of the current project.",
|
|
96
96
|
"default": false,
|
|
97
|
-
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx
|
|
97
|
+
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx v19."
|
|
98
98
|
},
|
|
99
99
|
"selector": {
|
|
100
100
|
"type": "string",
|
|
@@ -18,7 +18,9 @@ async function scamDirectiveGenerator(tree, rawOptions) {
|
|
|
18
18
|
});
|
|
19
19
|
(0, lib_1.convertDirectiveToScam)(tree, options);
|
|
20
20
|
(0, export_scam_1.exportScam)(tree, options);
|
|
21
|
-
|
|
21
|
+
if (!options.skipFormat) {
|
|
22
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
25
|
exports.scamDirectiveGenerator = scamDirectiveGenerator;
|
|
24
26
|
exports.default = scamDirectiveGenerator;
|
|
@@ -9,16 +9,17 @@ export interface Schema {
|
|
|
9
9
|
prefix?: string;
|
|
10
10
|
selector?: string;
|
|
11
11
|
export?: boolean;
|
|
12
|
+
skipFormat?: boolean;
|
|
12
13
|
/**
|
|
13
|
-
* @deprecated Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx
|
|
14
|
+
* @deprecated Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx v19.
|
|
14
15
|
*/
|
|
15
16
|
flat?: boolean;
|
|
16
17
|
/**
|
|
17
|
-
* @deprecated Provide the `directory` option instead. It will be removed in Nx
|
|
18
|
+
* @deprecated Provide the `directory` option instead. It will be removed in Nx v19.
|
|
18
19
|
*/
|
|
19
20
|
path?: string;
|
|
20
21
|
/**
|
|
21
|
-
* @deprecated Provide the `directory` option instead. The project will be determined from the directory provided. It will be removed in Nx
|
|
22
|
+
* @deprecated Provide the `directory` option instead. The project will be determined from the directory provided. It will be removed in Nx v19.
|
|
22
23
|
*/
|
|
23
24
|
project?: string;
|
|
24
25
|
}
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"$source": "projectName"
|
|
42
42
|
},
|
|
43
43
|
"x-dropdown": "projects",
|
|
44
|
-
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx
|
|
44
|
+
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx v19."
|
|
45
45
|
},
|
|
46
46
|
"skipTests": {
|
|
47
47
|
"type": "boolean",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"type": "boolean",
|
|
59
59
|
"description": "Create the new files at the top level of the current project.",
|
|
60
60
|
"default": true,
|
|
61
|
-
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx
|
|
61
|
+
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx v19."
|
|
62
62
|
},
|
|
63
63
|
"selector": {
|
|
64
64
|
"type": "string",
|
|
@@ -84,6 +84,12 @@
|
|
|
84
84
|
"description": "Specifies if the SCAM should be exported from the project's entry point (normally `index.ts`). It only applies to libraries.",
|
|
85
85
|
"default": true,
|
|
86
86
|
"x-priority": "important"
|
|
87
|
+
},
|
|
88
|
+
"skipFormat": {
|
|
89
|
+
"description": "Skip formatting files.",
|
|
90
|
+
"type": "boolean",
|
|
91
|
+
"default": false,
|
|
92
|
+
"x-priority": "internal"
|
|
87
93
|
}
|
|
88
94
|
},
|
|
89
95
|
"required": ["name"]
|
|
@@ -18,7 +18,9 @@ async function scamPipeGenerator(tree, rawOptions) {
|
|
|
18
18
|
});
|
|
19
19
|
(0, lib_1.convertPipeToScam)(tree, options);
|
|
20
20
|
(0, export_scam_1.exportScam)(tree, options);
|
|
21
|
-
|
|
21
|
+
if (!options.skipFormat) {
|
|
22
|
+
await (0, devkit_1.formatFiles)(tree);
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
25
|
exports.scamPipeGenerator = scamPipeGenerator;
|
|
24
26
|
exports.default = scamPipeGenerator;
|
|
@@ -7,16 +7,17 @@ export interface Schema {
|
|
|
7
7
|
skipTests?: boolean;
|
|
8
8
|
inlineScam?: boolean;
|
|
9
9
|
export?: boolean;
|
|
10
|
+
skipFormat?: boolean;
|
|
10
11
|
/**
|
|
11
|
-
* @deprecated Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx
|
|
12
|
+
* @deprecated Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx v19.
|
|
12
13
|
*/
|
|
13
14
|
flat?: boolean;
|
|
14
15
|
/**
|
|
15
|
-
* @deprecated Provide the `directory` option instead. It will be removed in Nx
|
|
16
|
+
* @deprecated Provide the `directory` option instead. It will be removed in Nx v19.
|
|
16
17
|
*/
|
|
17
18
|
path?: string;
|
|
18
19
|
/**
|
|
19
|
-
* @deprecated Provide the `directory` option instead. The project will be determined from the directory provided. It will be removed in Nx
|
|
20
|
+
* @deprecated Provide the `directory` option instead. The project will be determined from the directory provided. It will be removed in Nx v19.
|
|
20
21
|
*/
|
|
21
22
|
project?: string;
|
|
22
23
|
}
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"$source": "projectName"
|
|
42
42
|
},
|
|
43
43
|
"x-dropdown": "projects",
|
|
44
|
-
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx
|
|
44
|
+
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx v19."
|
|
45
45
|
},
|
|
46
46
|
"skipTests": {
|
|
47
47
|
"type": "boolean",
|
|
@@ -58,13 +58,19 @@
|
|
|
58
58
|
"type": "boolean",
|
|
59
59
|
"description": "Create the new files at the top level of the current project.",
|
|
60
60
|
"default": true,
|
|
61
|
-
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx
|
|
61
|
+
"x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx v19."
|
|
62
62
|
},
|
|
63
63
|
"export": {
|
|
64
64
|
"type": "boolean",
|
|
65
65
|
"description": "Specifies if the SCAM should be exported from the project's entry point (normally `index.ts`). It only applies to libraries.",
|
|
66
66
|
"default": true,
|
|
67
67
|
"x-priority": "important"
|
|
68
|
+
},
|
|
69
|
+
"skipFormat": {
|
|
70
|
+
"description": "Skip formatting files.",
|
|
71
|
+
"type": "boolean",
|
|
72
|
+
"default": false,
|
|
73
|
+
"x-priority": "internal"
|
|
68
74
|
}
|
|
69
75
|
},
|
|
70
76
|
"required": ["name"]
|
|
@@ -3,14 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.scamToStandalone = void 0;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
5
|
const lib_1 = require("./lib");
|
|
6
|
-
const version_utils_1 = require("../utils/version-utils");
|
|
7
|
-
const semver_1 = require("semver");
|
|
8
6
|
async function scamToStandalone(tree, { component, project: projectName, skipFormat }) {
|
|
9
|
-
const installedAngularVersionInfo = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
|
|
10
|
-
if ((0, semver_1.lt)(installedAngularVersionInfo.version, '14.1.0')) {
|
|
11
|
-
throw new Error((0, devkit_1.stripIndents) `This generator is only supported with Angular >= 14.1.0. You are currently using ${installedAngularVersionInfo.version}.
|
|
12
|
-
You can resolve this error by migrating to Angular 14.1.0.`);
|
|
13
|
-
}
|
|
14
7
|
const projects = (0, devkit_1.getProjects)(tree);
|
|
15
8
|
let project = (0, lib_1.getTargetProject)(projectName, projects);
|
|
16
9
|
const normalizedComponentPath = (0, devkit_1.joinPathFragments)(project.root, component);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
3
|
"$id": "GeneratorAngularScamToStandalone",
|
|
4
4
|
"cli": "nx",
|
|
5
5
|
"title": "Convert an Inline SCAM to Standalone Component",
|
|
6
|
-
"description": "Convert an Inline SCAM to a Standalone Component.
|
|
6
|
+
"description": "Convert an Inline SCAM to a Standalone Component.",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|
|
9
9
|
"component": {
|
|
@@ -37,6 +37,8 @@ describe('AppComponent', () => {
|
|
|
37
37
|
tick();
|
|
38
38
|
fixture.detectChanges();
|
|
39
39
|
const compiled = fixture.nativeElement as HTMLElement;
|
|
40
|
-
expect(compiled.querySelector('h1')?.textContent).toContain(
|
|
40
|
+
expect(compiled.querySelector('h1')?.textContent).toContain(
|
|
41
|
+
'Welcome <%= appName %>'
|
|
42
|
+
);
|
|
41
43
|
}));
|
|
42
44
|
});
|
|
@@ -2,6 +2,18 @@ import { ModuleFederationConfig } from '@nx/webpack';
|
|
|
2
2
|
|
|
3
3
|
const config: ModuleFederationConfig = {
|
|
4
4
|
name: '<%= name %>',<% if(type === 'host') { %>
|
|
5
|
+
/**
|
|
6
|
+
* To use a remote that does not exist in your current Nx Workspace
|
|
7
|
+
* You can use the tuple-syntax to define your remote
|
|
8
|
+
*
|
|
9
|
+
* remotes: [['my-external-remote', 'https://nx-angular-remote.netlify.app']]
|
|
10
|
+
*
|
|
11
|
+
* You _may_ need to add a `remotes.d.ts` file to your `src/` folder declaring the external remote for tsc, with the
|
|
12
|
+
* following content:
|
|
13
|
+
*
|
|
14
|
+
* declare module 'my-external-remote';
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
5
17
|
remotes: [<% remotes.forEach(function(remote) { %>'<%= remote.remoteName %>',<% }); %>]<% } %><% if(type === 'remote') { %>
|
|
6
18
|
exposes: {<% if(standalone) { %>
|
|
7
19
|
'./Routes': '<%= projectRoot %>/src/app/remote-entry/entry.routes.ts',<% } else { %>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"target": "ES2020"
|
|
5
|
+
},
|
|
6
|
+
"include": [
|
|
7
|
+
"src/main.ts",
|
|
8
|
+
<% if(type === "remote") { %> "src/remote-entry/<% if(standalone) { %>entry.routes.ts", <% } else { %> entry.module.ts", <% } } %>
|
|
9
|
+
"webpack.config.ts",
|
|
10
|
+
"webpack.prod.config.ts"
|
|
11
|
+
]
|
|
12
|
+
}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {withModuleFederation} from '@nx/angular/module-federation';
|
|
1
|
+
import { withModuleFederation } from '@nx/angular/module-federation';
|
|
2
2
|
import config from './module-federation.config';
|
|
3
3
|
|
|
4
4
|
export default withModuleFederation({
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
5
|
+
...config,
|
|
6
|
+
/*
|
|
7
|
+
* Remote overrides for production.
|
|
8
|
+
* Each entry is a pair of a unique name and the URL where it is deployed.
|
|
9
|
+
*
|
|
10
|
+
* e.g.
|
|
11
|
+
* remotes: [
|
|
12
|
+
* ['app1', 'https://app1.example.com'],
|
|
13
|
+
* ['app2', 'https://app2.example.com'],
|
|
14
|
+
* ]
|
|
15
|
+
*/
|
|
16
16
|
});
|
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
name: '<%= name %>',<% if(type === 'host') { %>
|
|
3
|
+
/**
|
|
4
|
+
* To use a remote that does not exist in your current Nx Workspace
|
|
5
|
+
* You can use the tuple-syntax to define your remote
|
|
6
|
+
*
|
|
7
|
+
* remotes: [['my-external-remote', 'https://nx-angular-remote.netlify.app']]
|
|
8
|
+
*
|
|
9
|
+
* You _may_ need to add a `remotes.d.ts` file to your `src/` folder declaring the external remote for tsc, with the
|
|
10
|
+
* following content:
|
|
11
|
+
*
|
|
12
|
+
* declare module 'my-external-remote';
|
|
13
|
+
*
|
|
14
|
+
*/
|
|
3
15
|
remotes: [<% remotes.forEach(function(remote) { %>'<%= remote.remoteName %>',<% }); %>]<% } %><% if(type === 'remote') { %>
|
|
4
16
|
exposes: {<% if(standalone) { %>
|
|
5
17
|
'./Routes': '<%= projectRoot %>/src/app/remote-entry/entry.routes.ts',<% } else { %>
|
|
6
18
|
'./Module': '<%= projectRoot %>/src/app/remote-entry/entry.module.ts',<% } %>
|
|
7
19
|
},<% } %>
|
|
8
|
-
}
|
|
20
|
+
};
|
|
@@ -22,10 +22,20 @@ function addCypressOnErrorWorkaround(tree, schema) {
|
|
|
22
22
|
`);
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
|
-
if (e2eProject.targets
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
if (e2eProject.targets?.e2e?.executor !== '@nx/cypress:cypress') {
|
|
26
|
+
try {
|
|
27
|
+
// don't ensure package is installed, if it's not installed, we don't need to add the workaround
|
|
28
|
+
const { CYPRESS_CONFIG_FILE_NAME_PATTERN, } = require('@nx/cypress/src/utils/config');
|
|
29
|
+
if (!(0, devkit_1.glob)(tree, [`${e2eProject.root}/${CYPRESS_CONFIG_FILE_NAME_PATTERN}`])
|
|
30
|
+
.length) {
|
|
31
|
+
// Not a cypress e2e project, skip
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// assume cypress is not installed
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
29
39
|
}
|
|
30
40
|
const commandToAdd = `Cypress.on('uncaught:exception', err => {
|
|
31
41
|
if (err.message.includes(\`Cannot use 'import.meta' outside a module\`)) {
|
|
@@ -15,17 +15,8 @@ function addRemoteEntry(tree, { appName, routing, prefix, standalone }, appRoot)
|
|
|
15
15
|
if (standalone && routing) {
|
|
16
16
|
(0, route_utils_1.addRoute)(tree, (0, devkit_1.joinPathFragments)(appRoot, 'src/app/app.routes.ts'), `{path: '', loadChildren: () => import('./remote-entry/entry.routes').then(m => m.remoteRoutes)}`);
|
|
17
17
|
}
|
|
18
|
-
else {
|
|
19
|
-
|
|
20
|
-
(0, route_utils_1.addRoute)(tree, (0, devkit_1.joinPathFragments)(appRoot, 'src/app/app.routes.ts'), `{path: '', loadChildren: () => import('./remote-entry/entry.module').then(m => m.RemoteEntryModule)}`);
|
|
21
|
-
}
|
|
22
|
-
tree.write(`${appRoot}/src/app/app.module.ts`, `/*
|
|
23
|
-
* This RemoteEntryModule is imported here to allow TS to find the Module during
|
|
24
|
-
* compilation, allowing it to be included in the built bundle. This is required
|
|
25
|
-
* for the Module Federation Plugin to expose the Module correctly.
|
|
26
|
-
* */
|
|
27
|
-
import { RemoteEntryModule } from './remote-entry/entry.module';
|
|
28
|
-
${tree.read(`${appRoot}/src/app/app.module.ts`, 'utf-8')}`);
|
|
18
|
+
else if (routing) {
|
|
19
|
+
(0, route_utils_1.addRoute)(tree, (0, devkit_1.joinPathFragments)(appRoot, 'src/app/app.routes.ts'), `{ path: '', loadChildren: () => import('./remote-entry/entry.module').then(m => m.RemoteEntryModule) }`);
|
|
29
20
|
}
|
|
30
21
|
}
|
|
31
22
|
exports.addRemoteEntry = addRemoteEntry;
|
|
@@ -102,7 +102,7 @@ function addLazyLoadedRouteToHostAppModule(tree, options, hostFederationType) {
|
|
|
102
102
|
if (appComponent.includes(`<ul class="remote-menu">`) &&
|
|
103
103
|
appComponent.includes('</ul>')) {
|
|
104
104
|
const indexOfClosingMenuTag = appComponent.indexOf('</ul>');
|
|
105
|
-
const newAppComponent = `${appComponent.slice(0, indexOfClosingMenuTag)}<li><a routerLink=
|
|
105
|
+
const newAppComponent = `${appComponent.slice(0, indexOfClosingMenuTag)}<li><a routerLink="${options.appName}">${(0, devkit_1.names)(options.appName).className}</a></li>\n${appComponent.slice(indexOfClosingMenuTag)}`;
|
|
106
106
|
tree.write(pathToAppComponentTemplate, newAppComponent);
|
|
107
107
|
}
|
|
108
108
|
}
|
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fixBootstrap = void 0;
|
|
4
4
|
const devkit_1 = require("@nx/devkit");
|
|
5
|
-
const version_utils_1 = require("../../utils/version-utils");
|
|
6
5
|
function fixBootstrap(tree, appRoot, options) {
|
|
7
6
|
const mainFilePath = (0, devkit_1.joinPathFragments)(appRoot, 'src/main.ts');
|
|
8
7
|
const bootstrapCode = tree.read(mainFilePath, 'utf-8');
|
|
9
|
-
const installedAngularMajor = (0, version_utils_1.getInstalledAngularMajorVersion)(tree);
|
|
10
8
|
if (options.standalone && options.mfType === 'remote') {
|
|
11
|
-
tree.write(`${appRoot}/src/bootstrap.ts`, standaloneBootstrapCode(
|
|
9
|
+
tree.write(`${appRoot}/src/bootstrap.ts`, standaloneBootstrapCode());
|
|
12
10
|
}
|
|
13
11
|
else {
|
|
14
12
|
tree.write((0, devkit_1.joinPathFragments)(appRoot, 'src/bootstrap.ts'), bootstrapCode);
|
|
@@ -16,26 +14,20 @@ function fixBootstrap(tree, appRoot, options) {
|
|
|
16
14
|
const bootstrapImportCode = `import('./bootstrap').catch(err => console.error(err))`;
|
|
17
15
|
const fetchMFManifestCode = `import { setRemoteDefinitions } from '@nx/angular/mf';
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
fetch('/assets/module-federation.manifest.json')
|
|
20
18
|
.then((res) => res.json())
|
|
21
19
|
.then(definitions => setRemoteDefinitions(definitions))
|
|
22
|
-
.then(() => ${bootstrapImportCode})
|
|
20
|
+
.then(() => ${bootstrapImportCode});`;
|
|
23
21
|
tree.write(mainFilePath, options.mfType === 'host' && options.federationType === 'dynamic'
|
|
24
22
|
? fetchMFManifestCode
|
|
25
|
-
: bootstrapImportCode);
|
|
23
|
+
: `${bootstrapImportCode};`);
|
|
26
24
|
}
|
|
27
25
|
exports.fixBootstrap = fixBootstrap;
|
|
28
|
-
const standaloneBootstrapCode = (
|
|
29
|
-
import {appConfig} from './app/app.config';
|
|
30
|
-
import {RemoteEntryComponent} from './app/remote-entry/entry.component';
|
|
31
|
-
|
|
32
|
-
? `import {enableProdMode} from '@angular/core';
|
|
33
|
-
import {environment} from './environments/environment';
|
|
34
|
-
if(environment.production) {
|
|
35
|
-
enableProdMode();
|
|
36
|
-
}
|
|
37
|
-
`
|
|
38
|
-
: ``}
|
|
26
|
+
const standaloneBootstrapCode = () => `import { bootstrapApplication } from '@angular/platform-browser';
|
|
27
|
+
import { appConfig } from './app/app.config';
|
|
28
|
+
import { RemoteEntryComponent } from './app/remote-entry/entry.component';
|
|
29
|
+
|
|
39
30
|
bootstrapApplication(RemoteEntryComponent, appConfig).catch((err) =>
|
|
40
31
|
console.error(err)
|
|
41
|
-
)
|
|
32
|
+
);
|
|
33
|
+
`;
|
|
@@ -23,5 +23,8 @@ function generateWebpackConfig(tree, options, appRoot, remotesWithPorts) {
|
|
|
23
23
|
projectRoot: appRoot,
|
|
24
24
|
standalone: options.standalone,
|
|
25
25
|
});
|
|
26
|
+
if (!options.setParserOptionsProject) {
|
|
27
|
+
tree.delete((0, devkit_1.joinPathFragments)(appRoot, 'tsconfig.lint.json'));
|
|
28
|
+
}
|
|
26
29
|
}
|
|
27
30
|
exports.generateWebpackConfig = generateWebpackConfig;
|
|
@@ -6,7 +6,7 @@ export * from './fix-bootstrap';
|
|
|
6
6
|
export * from './generate-config';
|
|
7
7
|
export * from './get-remotes-with-ports';
|
|
8
8
|
export * from './normalize-options';
|
|
9
|
-
export * from './
|
|
9
|
+
export * from './update-tsconfig';
|
|
10
10
|
export * from './setup-host-if-dynamic';
|
|
11
11
|
export * from './setup-serve-target';
|
|
12
12
|
export * from './update-host-app-routes';
|
|
@@ -9,7 +9,7 @@ tslib_1.__exportStar(require("./fix-bootstrap"), exports);
|
|
|
9
9
|
tslib_1.__exportStar(require("./generate-config"), exports);
|
|
10
10
|
tslib_1.__exportStar(require("./get-remotes-with-ports"), exports);
|
|
11
11
|
tslib_1.__exportStar(require("./normalize-options"), exports);
|
|
12
|
-
tslib_1.__exportStar(require("./
|
|
12
|
+
tslib_1.__exportStar(require("./update-tsconfig"), exports);
|
|
13
13
|
tslib_1.__exportStar(require("./setup-host-if-dynamic"), exports);
|
|
14
14
|
tslib_1.__exportStar(require("./setup-serve-target"), exports);
|
|
15
15
|
tslib_1.__exportStar(require("./update-host-app-routes"), exports);
|
|
@@ -7,7 +7,8 @@ function normalizeOptions(tree, options) {
|
|
|
7
7
|
...options,
|
|
8
8
|
typescriptConfiguration: options.typescriptConfiguration ?? true,
|
|
9
9
|
federationType: options.federationType ?? 'static',
|
|
10
|
-
prefix: options.prefix ?? (0, project_1.getProjectPrefix)(tree, options.appName),
|
|
10
|
+
prefix: options.prefix ?? (0, project_1.getProjectPrefix)(tree, options.appName) ?? 'app',
|
|
11
|
+
standalone: options.standalone ?? true,
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
14
|
exports.normalizeOptions = normalizeOptions;
|
|
@@ -30,16 +30,16 @@ import { RouterModule } from '@angular/router';
|
|
|
30
30
|
import { AppComponent } from './app.component';
|
|
31
31
|
|
|
32
32
|
@NgModule({
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
declarations: [AppComponent],
|
|
34
|
+
imports: [
|
|
35
|
+
BrowserModule,
|
|
36
|
+
RouterModule.forRoot([{
|
|
37
|
+
path: '',
|
|
38
|
+
loadChildren: () => import('./remote-entry/entry.module').then(m => m.RemoteEntryModule)
|
|
39
|
+
}], { initialNavigation: 'enabledBlocking' }),
|
|
40
|
+
],
|
|
41
|
+
providers: [],
|
|
42
|
+
bootstrap: [AppComponent],
|
|
43
43
|
})
|
|
44
44
|
export class AppModule {}`);
|
|
45
45
|
}
|
|
@@ -8,7 +8,7 @@ function setupServeTarget(host, options) {
|
|
|
8
8
|
...appConfig.targets['serve'],
|
|
9
9
|
executor: options.mfType === 'host'
|
|
10
10
|
? '@nx/angular:module-federation-dev-server'
|
|
11
|
-
: '@nx/angular:
|
|
11
|
+
: '@nx/angular:dev-server',
|
|
12
12
|
options: {
|
|
13
13
|
...appConfig.targets['serve'].options,
|
|
14
14
|
port: options.port ?? undefined,
|