From 497b4bc5cd9c60235d55b0e5fd8c89ebab2b39d7 Mon Sep 17 00:00:00 2001 From: Jack Hsu Date: Wed, 25 Feb 2026 13:21:38 -0500 Subject: [PATCH] fix(nx-dev): move redirects from Next.js config to Netlify _redirects ## Current Behavior All 1200+ redirect rules are processed by the Next.js serverless function via the `redirects()` config. This means every redirect request requires a cold start of the serverless function, contributing to outages. ## Expected Behavior Redirects are handled at the Netlify CDN edge via a plain `_redirects` file, which is faster and doesn't depend on the Next.js serverless function being healthy. Rewrites (Astro docs proxy) remain in next.config.js as they require server-side processing. ## Related Issue(s) Fixes DOC-415 --- nx-dev/nx-dev/_redirects | 1321 +++++++++++++++++ nx-dev/nx-dev/next.config.js | 17 - nx-dev/nx-dev/project.json | 2 +- .../scripts/generate-netlify-redirects.mjs | 101 ++ 4 files changed, 1423 insertions(+), 18 deletions(-) create mode 100644 nx-dev/nx-dev/_redirects create mode 100644 nx-dev/nx-dev/scripts/generate-netlify-redirects.mjs diff --git a/nx-dev/nx-dev/_redirects b/nx-dev/nx-dev/_redirects new file mode 100644 index 00000000000..754b6c71a6f --- /dev/null +++ b/nx-dev/nx-dev/_redirects @@ -0,0 +1,1321 @@ +# Netlify _redirects file +# Generated from redirect-rules.js and redirect-rules-docs-to-astro.js +# All rules are permanent (301) redirects. +# +# Netlify processes these top-to-bottom, first match wins. +# Specific rules MUST come before wildcard rules. + +# --- cliUrls --- +/cli/connect-to-nx-cloud /docs/features/ci-features 301 +/cli/affected-dep-graph /docs/reference/deprecated/affected-graph 301 +/cli/affected-apps /docs/reference/deprecated/print-affected 301 +/cli/affected-libs /docs/reference/deprecated/print-affected 301 +/cli/print-affected /docs/reference/deprecated/print-affected 301 +/cli/* /docs/reference/nx-commands 301 + +# --- diataxis --- +/getting-started/nx-setup /docs/getting-started/intro 301 +/getting-started/nx-core /getting-started/core-tutorial 301 +/getting-started/nx-and-typescript /docs/getting-started/intro 301 +/getting-started/nx-and-react /docs/getting-started/intro 301 +/getting-started/nx-and-angular /docs/getting-started/intro 301 +/configuration/packagejson /docs/reference/project-configuration 301 +/configuration/projectjson /docs/reference/project-configuration 301 +/using-nx/nx-cli /docs/getting-started/intro 301 +/using-nx/console /docs/getting-started/editor-setup 301 +/features/integrate-with-editors /docs/getting-started/editor-setup 301 +/using-nx/mental-model /docs/concepts/mental-model 301 +/using-nx/caching /docs/concepts/how-caching-works 301 +/using-nx/dte /docs/features/ci-features/distribute-task-execution 301 +/using-nx/affected /docs/features/ci-features/affected 301 +/using-nx/ci-overview /docs/guides/nx-cloud/setup-ci 301 +/using-nx/updating-nx /docs/features/automate-updating-dependencies 301 +/using-nx/nx-nodejs-typescript-version-matrix /packages/workspace/documents/nx-nodejs-typescript-version-matrix 301 +/extending-nx/nx-devkit /docs/extending-nx/intro 301 +/extending-nx/project-inference-plugins /docs/extending-nx/project-graph-plugins 301 +/extending-nx/project-graph-plugins /docs/extending-nx/project-graph-plugins 301 +/migration/adding-to-monorepo /docs/guides/adopting-nx/adding-to-monorepo 301 +/migration/migration-cra /docs/guides/adopting-nx/adding-to-existing-project 301 +/migration/migration-angular /docs/technologies/angular 301 +/migration/migration-angularjs /docs/technologies/angular 301 +/recipes/angular/migration/angularjs /docs/technologies/angular 301 +/migration/preserving-git-histories /docs/guides/adopting-nx/preserving-git-histories 301 +/migration/manual /docs/guides/adopting-nx/manual 301 +/executors/using-builders /docs/concepts/executors-and-configurations 301 +/executors/run-commands-builder /docs/guides/tasks--caching/run-commands-executor 301 +/executors/creating-custom-builders /docs/extending-nx/local-executors 301 +/generators/using-generators /docs/features/generate-code 301 +/generators/workspace-generators /docs/reference/deprecated/workspace-generators 301 +/generators/composing-generators /docs/extending-nx/composing-generators 301 +/generators/generator-options /docs/extending-nx 301 +/generators/creating-files /docs/extending-nx/creating-files 301 +/generators/modifying-files /docs/extending-nx/modifying-files 301 +/structure/applications-and-libraries more-concepts/applications-and-libraries 301 +/structure/creating-libraries /docs/concepts/decisions/project-size 301 +/structure/library-types /docs/concepts/decisions/project-dependency-rules 301 +/structure/grouping-libraries /docs/concepts/decisions/folder-structure 301 +/structure/buildable-and-publishable-libraries /docs/concepts/buildable-and-publishable-libraries 301 +/structure/monorepo-tags /docs/features/enforce-module-boundaries 301 +/core-features/enforce-project-boundaries /docs/features/enforce-module-boundaries 301 +/structure/dependency-graph /docs/features/explore-graph 301 +/structure/project-graph-plugins /docs/extending-nx/project-graph-plugins 301 +/ci/monorepo-ci-azure /docs/guides/nx-cloud/setup-ci 301 +/ci/monorepo-ci-circle-ci /docs/guides/nx-cloud/setup-ci 301 +/ci/monorepo-ci-github-actions /docs/guides/nx-cloud/setup-ci 301 +/ci/monorepo-ci-jenkins /docs/guides/nx-cloud/setup-ci 301 +/ci/monorepo-ci-gitlab /docs/guides/nx-cloud/setup-ci 301 +/ci/monorepo-ci-bitbucket-pipelines /docs/guides/nx-cloud/setup-ci 301 +/ci/distributed-builds /docs/concepts/ci-concepts/parallelization-distribution 301 +/ci/setup-incremental-builds-angular /recipes/angular/setup-incremental-builds-angular 301 +/guides/turbo-and-nx /docs/guides/adopting-nx/from-turborepo 301 +/guides/why-monorepos /docs/concepts/decisions/why-monorepos 301 +/guides/adding-assets-react /recipes/react/adding-assets 301 +/guides/environment-variables /docs/reference/environment-variables 301 +/guides/performance-profiling /docs/troubleshooting/performance-profiling 301 +/guides/eslint /docs/technologies/eslint 301 +/guides/customize-webpack /recipes/webpack/webpack-config-setup 301 +/guides/nx-daemon /docs/concepts/nx-daemon 301 +/guides/js-and-ts /docs/technologies/typescript/guides/js-and-ts 301 +/guides/browser-support /docs/guides/tips-n-tricks/browser-support 301 +/guides/react-native /recipes/react/react-native 301 +/guides/deploy-nextjs-to-vercel /recipes/react/deploy-nextjs-to-vercel 301 +/guides/using-tailwind-css-in-react /recipes/react/using-tailwind-css-in-react 301 +/guides/react-18 /nx-api/react 301 +/guides/using-tailwind-css-with-angular-projects /recipes/angular/using-tailwind-css-with-angular-projects 301 +/guides/misc-ngrx /packages/angular/generators/ngrx 301 +/guides/misc-data-persistence /packages/angular/generators/ngrx 301 +/guides/nx-devkit-angular-devkit /nx-api/angular/documents/nx-devkit-angular-devkit 301 +/module-federation/faster-builds /concepts/module-federation/faster-builds-with-module-federation 301 +/module-federation/micro-frontend-architecture /concepts/module-federation/micro-frontend-architecture 301 +/module-federation/dynamic-module-federation-with-angular /recipes/angular/dynamic-module-federation-with-angular 301 +/examples/nx-examples /recipes/other/nx-examples 301 +/examples/react-nx /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/examples/apollo-react /docs/getting-started/intro 301 +/examples/caching /showcase/example-repos/caching 301 +/examples/dte /showcase/example-repos/dte 301 +/recipe/workspace-generators /docs/extending-nx/local-generators 301 +/recipes/other/customize-webpack /recipes/webpack/webpack-config-setup 301 + +# --- guideUrls --- +/core-concepts/configuration /docs/reference/project-configuration 301 +/core-concepts/mental-model /docs/concepts/mental-model 301 +/core-concepts/updating-nx /docs/features/automate-updating-dependencies 301 +/core-concepts/ci-overview /docs/guides/nx-cloud/setup-ci 301 +/getting-started/nx-cli /docs/getting-started/intro 301 +/getting-started/console /docs/getting-started/editor-setup 301 +/core-extended/affected /docs/features/ci-features/affected 301 +/core-extended/computation-caching /docs/concepts/how-caching-works 301 +/guides/nextjs /packages/next 301 +/using-nx/nx-devkit /docs/extending-nx/intro 301 +/guides/lerna-and-nx https://lerna.js.org 301 +/migration/lerna-and-nx https://lerna.js.org 301 +/cypress/v10-migration-guide /packages/cypress/documents/v11-migration-guide 301 +/cypress/generators/migrate-to-cypress-10 /packages/cypress/generators/migrate-to-cypress-11 301 + +# --- recipesUrls --- +/recipe/adding-to-monorepo /docs/guides/adopting-nx/adding-to-monorepo 301 +/recipes/other/ban-dependencies-with-tags /docs/guides/enforce-module-boundaries/ban-dependencies-with-tags 301 +/recipes/other/tag-multiple-dimensions /docs/guides/enforce-module-boundaries/tag-multiple-dimensions 301 +/recipes/other/ban-external-imports /docs/guides/enforce-module-boundaries/ban-external-imports 301 +/recipes/other/tags-allow-list /docs/guides/enforce-module-boundaries/tags-allow-list 301 +/recipes/other/react-nx /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/recipes/other/apollo-react /docs/getting-started/intro 301 +/recipes/other/caching /showcase/example-repos/caching 301 +/recipes/other/dte /showcase/example-repos/dte 301 +/recipes/other/deploy-nextjs-to-vercel /recipes/react/deploy-nextjs-to-vercel 301 +/recipes/other/root-level-scripts /docs/guides/tasks--caching/root-level-scripts 301 +/recipes/other/analyze-source-files /docs/guides/tips-n-tricks/analyze-source-files 301 +/recipes/other/workspace-watching /docs/guides/tasks--caching/workspace-watching 301 +/recipes/other/advanced-update /docs/guides/tips-n-tricks/advanced-update 301 +/recipes/other/js-and-ts /docs/technologies/typescript/guides/js-and-ts 301 +/packages/cypress/documents/cypress-component-testing /recipes/cypress/cypress-component-testing 301 +/packages/cypress/documents/cypress-v11-migration /recipes/cypress/cypress-v11-migration 301 +/packages/next/documents/next-config-setup /recipes/next/next-config-setup 301 +/packages/vite/documents/set-up-vite-manually /recipes/vite/configure-vite 301 +/recipes/vite/set-up-vite-manually /recipes/vite/configure-vite 301 +/packages/webpack/documents/webpack-plugins /recipes/webpack/webpack-plugins 301 +/packages/webpack/documents/webpack-config-setup /recipes/webpack/webpack-config-setup 301 +/showcase/example-repos/add-nuxt /nx-api/nuxt 301 +/showcase/example-repos/add-vue /nx-api/vue 301 +/recipes/react/react-18 /nx-api/react 301 +/recipes/nx-console/console-shortcuts /docs/getting-started/editor-setup 301 +/recipes/nx-console/console-project-pane /docs/getting-started/editor-setup 301 +/recipes/nx-console/console-add-dependency-command /docs/getting-started/editor-setup 301 +/recipes/nx-release/publish-custom-dist-directory /recipes/nx-release/updating-version-references#scenario-2-i-want-to-publish-from-a-custom-dist-directory-and-not-update-references-in-my-source-packagejson-files 301 + +# --- nxCloudUrls --- +/nx-cloud/set-up/add-nx-cloud /docs/features/ci-features/remote-cache 301 +/nx-cloud/set-up/set-up-caching /docs/features/ci-features/remote-cache 301 +/nx-cloud/set-up/set-up-dte /docs/features/ci-features/distribute-task-execution 301 +/nx-cloud/private-cloud/standalone /ci/private-cloud/ami-setup 301 +/nx-cloud/private-cloud/kubernetes-setup /docs/enterprise/single-tenant/overview 301 +/recipes/ci /docs/guides/nx-cloud 301 +/recipes/ci/ci-setup /docs/guides/nx-cloud/setup-ci 301 +/nx-cloud/recipes/set-up/ci-setup /docs/guides/nx-cloud/setup-ci 301 +/recipes/ci/monorepo-ci-azure /docs/guides/nx-cloud/setup-ci 301 +/recipes/ci/monorepo-ci-circle-ci /nx-cloud/recipes/set-up/monorepo-ci-circle-ci 301 +/recipes/ci/monorepo-ci-github-action /nx-cloud/recipes/set-up/monorepo-ci-github-action 301 +/recipes/ci/monorepo-ci-jenkins /nx-cloud/recipes/set-up/monorepo-ci-jenkins 301 +/recipes/ci/monorepo-ci-gitlab /nx-cloud/recipes/set-up/monorepo-ci-gitlab 301 +/recipes/ci/monorepo-ci-bitbucket-pipelines /nx-cloud/recipes/set-up/monorepo-ci-bitbucket-pipelines 301 +/recipes/ci/ci-deployment /docs/guides/ci-deployment 301 +/nx-cloud/intro/what-is-nx-cloud /docs/getting-started/nx-cloud 301 +/nx-cloud/set-up /docs/guides/nx-cloud/setup-ci 301 +/nx-cloud/set-up/record-commands /docs/guides/nx-cloud/record-commands 301 +/nx-cloud/set-up/github /docs/guides/nx-cloud/setup-ci 301 +/nx-cloud/recipes/source-control-integration/github /docs/guides/nx-cloud/setup-ci 301 +/nx-cloud/set-up/bitbucket-cloud /docs/guides/nx-cloud/setup-ci 301 +/nx-cloud/recipes/source-control-integration/bitbucket-cloud /docs/guides/nx-cloud/setup-ci 301 +/ci/recipes/source-control-integration/bitbucket-cloud /docs/guides/nx-cloud/setup-ci 301 +/nx-cloud/set-up/gitlab /docs/guides/nx-cloud/setup-ci 301 +/core-features/remote-cache /docs/features/ci-features/remote-cache 301 +/core-features/distribute-task-execution /docs/features/ci-features/distribute-task-execution 301 +/concepts/affected /docs/features/ci-features/affected 301 +/nx-cloud/private-cloud /docs/enterprise/single-tenant/overview 301 +/nx-cloud/private-cloud/get-started /docs/enterprise/single-tenant/overview 301 +/ci/features/on-premise https://github.com/nrwl/nx-cloud-helm 301 +/nx-cloud/private-cloud/* https://github.com/nrwl/nx-cloud-helm 301 +/ci/recipes/on-premise/* https://github.com/nrwl/nx-cloud-helm 301 +/ci/recipes/enterprise/on-premise/* https://github.com/nrwl/nx-cloud-helm 301 +/concepts/dte /docs/concepts/ci-concepts/parallelization-distribution 301 +/nx-cloud/concepts/dte /docs/concepts/ci-concepts/parallelization-distribution 301 +/nx-cloud/intro/nx-cloud-workflows /ci/features/nx-cloud-workflows 301 +/nx-cloud/account /docs/guides/nx-cloud 301 +/nx-cloud/account/google-auth /docs/guides/nx-cloud/google-auth 301 +/nx-cloud/account/access-tokens /docs/guides/nx-cloud/access-tokens 301 +/nx-cloud/account/scenarios /docs/concepts/ci-concepts/cache-security 301 +/nx-cloud/concepts/scenarios /docs/concepts/ci-concepts/cache-security 301 +/nx-cloud/account/encryption /docs/guides/nx-cloud/encryption 301 +/nx-cloud/concepts/encryption /docs/guides/nx-cloud/encryption 301 +/nx-cloud/features/nx-cloud-workflows /docs/features/ci-features/distribute-task-execution 301 +/ci/features/nx-agents /docs/features/ci-features/distribute-task-execution 301 +/concepts/more-concepts/illustrated-dte /docs/concepts/ci-concepts/parallelization-distribution 301 +/core-features/* /features/:splat 301 +/ci/recipes/set-up/connect-to-cloud /docs/guides/nx-cloud/setup-ci 301 +/ci/intro/connect-to-cloud /docs/guides/nx-cloud/setup-ci 301 +/pricing/special-offer https://forms.gle/FBzvsspz1o63fDAz6 301 +/powerpack/special-offer https://forms.gle/mWjQo6Vrv5Kt6WYh9 301 +/ci/intro/why-nx-cloud /docs/getting-started/nx-cloud 301 +/ci/intro/ci-with-nx /docs/guides/nx-cloud/setup-ci 301 +/ci/intro/connect-to-nx-cloud /docs/guides/nx-cloud/setup-ci 301 + +# --- tutorialRedirects --- +/l/a/tutorial/1-code-generation /docs/getting-started/tutorials/angular-monorepo-tutorial 301 +/l/angular/tutorial/1-code-generation /docs/getting-started/tutorials/angular-monorepo-tutorial 301 +/latest/a/tutorial/1-code-generation /docs/getting-started/tutorials/angular-monorepo-tutorial 301 +/latest/angular/tutorial/1-code-generation /docs/getting-started/tutorials/angular-monorepo-tutorial 301 +/l/a/tutorial/1-code-generation /docs/getting-started/tutorials 301 +/l/node/tutorial/1-code-generation /docs/getting-started/tutorials 301 +/latest/a/tutorial/1-code-generation /docs/getting-started/tutorials 301 +/latest/node/tutorial/1-code-generation /docs/getting-started/tutorials 301 +/l/r/tutorial/1-code-generation /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/l/react/tutorial/1-code-generation /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/latest/r/tutorial/1-code-generation /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/latest/react/tutorial/1-code-generation /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/tutorial /docs/getting-started/tutorials 301 +/tutorial/* /docs/getting-started/tutorials 301 +/getting-started/node-tutorial /docs/getting-started/tutorials 301 +/getting-started/tutorials/node-server-tutorial /docs/getting-started/tutorials 301 +/react-tutorial/* /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/angular-tutorial/* /docs/getting-started/tutorials/angular-monorepo-tutorial 301 +/node-tutorial/* /docs/getting-started/tutorials 301 +/react-standalone-tutorial/* /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/angular-standalone-tutorial/* /docs/getting-started/tutorials/angular-monorepo-tutorial 301 + +# --- standaloneTutorialRedirects --- +/showcase/example-repos/react-nx /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/react-tutorial /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/react-standalone-tutorial /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/angular-standalone-tutorial /docs/getting-started/tutorials/angular-monorepo-tutorial 301 + +# --- conceptUrls --- +/concepts/more-concepts/global-nx /getting-started/installation#installing-nx-globally 301 +/getting-started/package-based-repo-tutorial /docs/getting-started/tutorials/typescript-packages-tutorial 301 +/getting-started/tutorials/package-based-repo-tutorial /docs/getting-started/tutorials/typescript-packages-tutorial 301 +/getting-started/integrated-repo-tutorial /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/getting-started/tutorials/integrated-repo-tutorial /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/getting-started/react-standalone-tutorial /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/getting-started/angular-standalone-tutorial /docs/getting-started/tutorials/angular-monorepo-tutorial 301 +/concepts/more-concepts/micro-frontend-architecture /concepts/module-federation/micro-frontend-architecture 301 +/concepts/more-concepts/faster-builds-with-module-federation /concepts/module-federation/faster-builds-with-module-federation 301 +/concepts/more-concepts/nx-and-angular /nx-api/angular/documents/nx-and-angular 301 +/concepts/more-concepts/nx-devkit-angular-devkit /nx-api/angular/documents/nx-devkit-angular-devkit 301 +/concepts/more-concepts/incremental-builds /docs/concepts/buildable-and-publishable-libraries 301 +/concepts/turbo-and-nx /docs/guides/adopting-nx/from-turborepo 301 + +# --- nested5minuteTutorialUrls --- +/tutorials/package-based-repo-tutorial /docs/getting-started/tutorials/typescript-packages-tutorial 301 +/getting-started/tutorials/npm-workspaces-tutorial /docs/getting-started/tutorials/typescript-packages-tutorial 301 +/tutorials/integrated-repo-tutorial /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/tutorials/react-standalone-tutorial /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/getting-started/tutorials/react-standalone-tutorial /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/tutorials/angular-standalone-tutorial /docs/getting-started/tutorials/angular-monorepo-tutorial 301 +/getting-started/tutorials/angular-standalone-tutorial /docs/getting-started/tutorials/angular-monorepo-tutorial 301 +/getting-started/tutorials/vue-standalone-tutorial /docs/getting-started/tutorials 301 +/tutorials/node-server-tutorial /docs/getting-started/tutorials 301 +/angular-tutorial /docs/getting-started/tutorials/angular-monorepo-tutorial 301 +/getting-started/angular-monorepo-tutorial /docs/getting-started/tutorials/angular-monorepo-tutorial 301 + +# --- pluginUrls --- +/plugin-features/create-your-own-plugin /docs/extending-nx/organization-specific-plugin 301 +/extending-nx/tutorials/create-plugin /docs/extending-nx/organization-specific-plugin 301 +/extending-nx/tutorials/publish-plugin /docs/extending-nx/tooling-plugin 301 +/recipes/advanced-plugins /docs/extending-nx 301 +/recipes/advanced-plugins/create-preset /docs/extending-nx/create-preset 301 +/recipes/advanced-plugins/migration-generators /docs/extending-nx/migration-generators 301 +/recipes/advanced-plugins/project-graph-plugins /docs/extending-nx/project-graph-plugins 301 +/extending-nx/recipes/project-inference-plugins /docs/extending-nx/project-graph-plugins 301 +/recipes/advanced-plugins/project-inference-plugins /docs/extending-nx/project-graph-plugins 301 +/recipes/advanced-plugins/share-your-plugin /extending-nx/tutorials/maintain-published-plugin 301 +/recipes/executors/compose-executors /docs/extending-nx/compose-executors 301 +/recipes/executors/creating-custom-executors /docs/extending-nx/local-executors 301 +/recipes/generators /docs/extending-nx 301 +/recipes/generators/composing-generators /docs/extending-nx/composing-generators 301 +/recipes/generators/creating-files /docs/extending-nx/creating-files 301 +/recipes/generators/generator-options /docs/extending-nx 301 +/recipes/generators/local-generators /docs/extending-nx/local-generators 301 +/recipes/generators/modifying-files /docs/extending-nx/modifying-files 301 +/extending-nx/registry /docs/plugin-registry 301 + +# --- referenceUrls --- +/reference/changelog /changelog 301 + +# --- missingAndCatchAllRedirects --- +/l/a/* /:splat 301 +/l/angular/* /:splat 301 +/l/r/* /:splat 301 +/l/react/* /:splat 301 +/l/n/* /:splat 301 +/l/node/* /:splat 301 +/latest/a/* /:splat 301 +/latest/angular/* /:splat 301 +/latest/r/* /:splat 301 +/latest/react/* /:splat 301 +/latest/n/* /:splat 301 +/latest/node/* /:splat 301 +/p/a/* /:splat 301 +/p/angular/* /:splat 301 +/p/r/* /:splat 301 +/p/react/* /:splat 301 +/p/n/* /:splat 301 +/p/node/* /:splat 301 +/previous/a/* /:splat 301 +/previous/angular/* /:splat 301 +/previous/r/* /:splat 301 +/previous/react/* /:splat 301 +/previous/n/* /:splat 301 +/previous/node/* /:splat 301 +/l/* /:splat 301 +/latest/* /:splat 301 +/p/* /:splat 301 +/previous/* /:splat 301 +/a/* /:splat 301 +/angular/* /:splat 301 +/n/* /:splat 301 +/node/* /:splat 301 +/l/r/storybook/overview /docs/technologies/test-tools/storybook/guides/overview-react 301 +/l/react/storybook/overview /docs/technologies/test-tools/storybook/guides/overview-react 301 +/latest/r/storybook/overview /docs/technologies/test-tools/storybook/guides/overview-react 301 +/latest/react/storybook/overview /docs/technologies/test-tools/storybook/guides/overview-react 301 +/l/a/storybook/overview /docs/technologies/test-tools/storybook/guides/overview-angular 301 +/l/angular/storybook/overview /docs/technologies/test-tools/storybook/guides/overview-angular 301 +/latest/a/storybook/overview /docs/technologies/test-tools/storybook/guides/overview-angular 301 +/latest/angular/storybook/overview /docs/technologies/test-tools/storybook/guides/overview-angular 301 +/l/a/storybook/executors /packages/storybook/executors/storybook 301 +/l/angular/storybook/executors /packages/storybook/executors/storybook 301 +/l/r/storybook/executors /packages/storybook/executors/storybook 301 +/l/react/storybook/executors /packages/storybook/executors/storybook 301 +/latest/a/storybook/executors /packages/storybook/executors/storybook 301 +/latest/angular/storybook/executors /packages/storybook/executors/storybook 301 +/latest/r/storybook/executors /packages/storybook/executors/storybook 301 +/latest/react/storybook/executors /packages/storybook/executors/storybook 301 +/nx-console /docs/getting-started/editor-setup 301 +/packages/* /nx-api/:splat 301 +/docs /docs/getting-started/intro 301 + +# --- movePluginFeaturesToCore --- +/plugin-features/use-task-executors /docs/concepts/executors-and-configurations 301 +/features/plugin-features/use-task-executors /docs/concepts/executors-and-configurations 301 +/plugin-features/use-code-generators /docs/features/generate-code 301 +/features/plugin-features/use-code-generators /docs/features/generate-code 301 + +# --- makeMoreConceptsSubmenu --- +/more-concepts /concepts/more-concepts 301 +/more-concepts/* /concepts/more-concepts/:splat 301 + +# --- pluginsToExtendNx --- +/plugins /docs/extending-nx/intro 301 +/plugins/* /extending-nx/:splat 301 + +# --- latestRecipesRefactoring --- +/recipes/getting-started/set-up-a-new-workspace /docs/getting-started/installation 301 +/recipes/other/misc-ngrx /packages/angular/generators/ngrx 301 +/recipes/other/misc-data-persistence /packages/angular/generators/ngrx 301 +/recipes/other/standalone-ngrx-apis /packages/angular/generators/ngrx 301 +/recipes/other/export-project-graph /recipes/features/explore-graph 301 +/recipes/executors/use-executor-configurations /docs/concepts/executors-and-configurations 301 +/recipes/other/azure-last-successful-commit /docs/guides/nx-cloud/setup-ci 301 +/recipes/adopting-nx/migration-angular /docs/technologies/angular 301 +/recipes/adopting-nx-angular/angular-integrated /docs/technologies/angular 301 +/recipes/adopting-nx-angular/angular-manual /docs/technologies/angular 301 +/recipes/angular/migration/angular-manual /docs/technologies/angular 301 +/recipes/adopting-nx-angular/angular-multiple /docs/technologies/angular/migration/angular-multiple 301 +/recipes/adopting-nx/migration-angularjs /docs/technologies/angular 301 +/recipes/environment-variables/use-environment-variables-in-angular /recipes/angular/use-environment-variables-in-angular 301 +/recipes/other/using-tailwind-css-with-angular-projects /recipes/angular/using-tailwind-css-with-angular-projects 301 +/recipes/module-federation/dynamic-module-federation-with-angular /recipes/angular/dynamic-module-federation-with-angular 301 +/recipes/other/setup-incremental-builds-angular /recipes/angular/setup-incremental-builds-angular 301 +/recipes/adopting-nx/migration-cra /docs/guides/adopting-nx/adding-to-existing-project 301 +/recipes/react/migration-cra /docs/guides/adopting-nx/adding-to-existing-project 301 +/recipes/other/react-18 /nx-api/react 301 +/recipes/other/react-native /recipes/react/react-native 301 +/recipes/other/remix /recipes/react/remix 301 +/recipes/environment-variables/use-environment-variables-in-react /recipes/react/use-environment-variables-in-react 301 +/recipes/other/using-tailwind-css-in-react /recipes/react/using-tailwind-css-in-react 301 +/recipes/deployment/deploy-nextjs-to-vercel /recipes/react/deploy-nextjs-to-vercel 301 +/recipes/module-federation/module-federation-with-ssr /recipes/react/module-federation-with-ssr 301 +/recipes/other/adding-assets-react /recipes/react/adding-assets 301 +/recipes/deployment/node-server-fly-io /recipes/node/node-server-fly-io 301 +/recipes/deployment/node-serverless-functions-netlify /recipes/node/node-serverless-functions-netlify 301 +/recipes/deployment/node-aws-lambda /recipes/node/node-aws-lambda 301 +/recipes/module-federation/nx-examples /docs/getting-started/intro 301 +/recipes/database/nestjs-prisma /docs/getting-started/intro 301 +/recipes/database/mongo-fastify /docs/getting-started/intro 301 +/recipes/database/redis-fastify /docs/getting-started/intro 301 +/recipes/database/postgres-fastify /docs/getting-started/intro 301 +/recipes/database/serverless-fastify-planetscale /docs/getting-started/intro 301 +/recipes/example-repos/* /showcase/example-repos/:splat 301 +/recipes/environment-variables/define-environment-variables /docs/guides/tips-n-tricks/define-environment-variables 301 +/recipes/other/eslint /docs/technologies/eslint 301 +/recipes/other/browser-support /docs/guides/tips-n-tricks/browser-support 301 +/recipes/other/include-assets-in-build /docs/guides/tips-n-tricks/include-assets-in-build 301 +/recipes/other/include-all-packagejson /docs/guides/tips-n-tricks/include-all-packagejson 301 +/recipes/other/identify-dependencies-between-folders /docs/guides/tips-n-tricks/identify-dependencies-between-folders 301 +/recipes/managing-repository/root-level-scripts /docs/guides/tasks--caching/root-level-scripts 301 +/recipes/managing-repository/analyze-source-files /docs/guides/tips-n-tricks/analyze-source-files 301 +/recipes/managing-repository/workspace-watching /docs/guides/tasks--caching/workspace-watching 301 +/recipes/managing-repository/standalone-to-integrated /docs/guides/tips-n-tricks/standalone-to-monorepo 301 +/recipes/managing-repository/js-and-ts /docs/technologies/typescript/guides/js-and-ts 301 +/recipes/managing-repository/advanced-update /docs/guides/tips-n-tricks/advanced-update 301 +/recipes/executors/run-commands-executor /docs/guides/tasks--caching/run-commands-executor 301 +/recipes/ci/azure-last-successful-commit /docs/guides/nx-cloud/setup-ci 301 +/recipes/module-federation/faster-builds /concepts/module-federation/faster-builds-with-module-federation 301 +/nx-api/js/documents/typescript-project-references /docs/concepts/typescript-project-linking 301 +/reference/commands /docs/reference/nx-commands 301 + +# --- coreFeatureRefactoring --- +/features/share-your-cache /docs/features/ci-features/remote-cache 301 +/concepts/more-concepts/customizing-inputs /docs/guides/tasks--caching/configure-inputs 301 +/recipes/tips-n-tricks/root-level-scripts /docs/guides/tasks--caching/root-level-scripts 301 +/recipes/tips-n-tricks/run-commands-executor /docs/guides/tasks--caching/run-commands-executor 301 +/recipes/tips-n-tricks/workspace-watching /docs/guides/tasks--caching/workspace-watching 301 +/recipes/tips-n-tricks/reduce-repetitive-configuration /docs/guides/tasks--caching/reduce-repetitive-configuration 301 +/concepts/more-concepts/nx-and-the-wrapper /getting-started/installation#selfmanaged-nx-installation 301 +/recipes/running-tasks/customizing-inputs /docs/guides/tasks--caching/configure-inputs 301 + +# --- eslintRename --- +/nx-api/linter /nx-api/eslint 301 +/nx-api/linter/documents /nx-api/eslint/documents 301 +/nx-api/linter/documents/overview /docs/technologies/eslint/introduction 301 +/nx-api/linter/executors /nx-api/eslint/executors 301 +/nx-api/linter/executors/eslint /nx-api/eslint/executors/lint 301 +/nx-api/linter/generators /nx-api/eslint/generators 301 +/nx-api/linter/generators/convert-to-flat-config /nx-api/eslint/generators/convert-to-flat-config 301 +/nx-api/linter/generators/workspace-rule /nx-api/eslint/generators/workspace-rule 301 +/nx-api/linter/generators/workspace-rules-project /nx-api/eslint/generators/workspace-rules-project 301 +/packages/linter /packages/eslint 301 + +# --- removedDeprecatedUrls --- +/concepts/integrated-vs-package-based /deprecated/integrated-vs-package-based 301 +/recipes/tips-n-tricks/package-based-in-integrated /deprecated/integrated-vs-package-based 301 +/recipes/tips-n-tricks/integrated-in-package-based /deprecated/integrated-vs-package-based 301 +/recipes/tips-n-tricks/standalone-to-integrated /docs/guides/tips-n-tricks/standalone-to-monorepo 301 +/recipes/other/rescope /deprecated/rescope 301 +/nx-api/nx/documents/affected-dep-graph /deprecated/affected-graph 301 +/nx/affected-dep-graph /deprecated/affected-graph 301 +/nx-api/nx/documents/print-affected /deprecated/print-affected 301 +/packages/nx/documents/print-affected /deprecated/print-affected 301 +/nx/affected-apps /deprecated/print-affected 301 +/nx/affected-libs /deprecated/print-affected 301 +/nx/print-affected /deprecated/print-affected 301 +/packages/nx/documents/affected-apps /deprecated/print-affected 301 +/packages/nx/documents/affected-libs /deprecated/print-affected 301 +/deprecated/default-collection /docs/features/generate-code 301 +/deprecated/workspace-lint /nx-api/nx/documents/report 301 +/deprecated/storybook/angular-storybook-targets /recipes/storybook/overview-angular 301 +/deprecated/storybook/angular-project-build-config /recipes/storybook/overview-angular 301 +/deprecated/storybook/migrate-webpack-final-angular /recipes/storybook/overview-angular 301 +/deprecated/storybook/upgrade-storybook-v6-angular /recipes/storybook/overview-angular 301 +/deprecated/storybook/migrate-webpack-final-react /recipes/storybook/overview-react 301 +/deprecated/storybook/upgrade-storybook-v6-react /recipes/storybook/overview-react 301 +/deprecated/custom-task-runners /deprecated/legacy-cache 301 + +# --- troubleshootingOutOfRecipes --- +/recipes/troubleshooting /docs/troubleshooting 301 +/recipes/troubleshooting/* /troubleshooting/:splat 301 +/ci/recipes/troubleshooting/* /ci/troubleshooting/:splat 301 +/recipes/other/resolve-circular-dependencies /docs/troubleshooting/resolve-circular-dependencies 301 +/recipes/ci/troubleshoot-nx-install-issues /docs/troubleshooting/troubleshoot-nx-install-issues 301 +/recipes/other/troubleshoot-cache-misses /docs/troubleshooting/troubleshoot-cache-misses 301 +/recipes/other/unknown-local-cache /docs/troubleshooting/unknown-local-cache 301 +/recipes/other/performance-profiling /docs/troubleshooting/performance-profiling 301 + +# --- blogPosts --- +/blog/2024-05-07-nx-19-release /blog/nx-19-release 301 +/blog/2024-05-08-nx-19-release /blog/nx-19-release 301 +/blog/2024-04-19-manage-your-gradle /blog/manage-your-gradle-project-using-nx 301 +/blog/2024-03-21-reliable-ci /blog/reliable-ci-a-new-execution-model-fixing-both-flakiness-and-slowness 301 +/blog/2024-03-20-why-speed-matters /blog/monorepos-why-speed-matters 301 +/blog/2024-02-15-launch-week-recap /blog/launch-nx-week-recap 301 +/blog/2024-02-09-versioning-and-releasing-packages /blog/versioning-and-releasing-packages-in-a-monorepo 301 +/blog/2024-02-07-fast-effortless-ci /blog/fast-effortless-ci 301 +/blog/2024-02-06-nuxt-js-support-in-nx /blog/introducing-nx-nuxt-enhanced-nuxt-js-support-in-nx 301 +/blog/2024-02-05-nx-18-project-crystal /blog/what-if-nx-plugins-were-more-like-vscode-extensions 301 +/blog/2023-12-28-highlights-2023 /blog/nx-highlights-of-2023 301 +/blog/2023-12-20-nx-17-2-release /blog/nx-17-2-release 301 +/blog/2023-11-22-unit-testing-expo /blog/unit-testing-expo-apps-with-jest 301 +/blog/2023-11-21-ai-assistant /blog/nx-docs-ai-assistant 301 +/blog/2023-11-08-state-management /blog/state-management-nx-react-native-expo-apps-with-tanstack-query-and-redux 301 +/blog/2023-10-20-nx-17-release /blog/nx-17-release 301 +/blog/2023-10-13-nx-conf-2023-recap /blog/nx-conf-2023-recap 301 +/blog/2023-09-25-nx-raises /blog/nx-raises-16m-series-a 301 +/blog/2023-08-15-qwikify-your-dev /blog/qwikify-your-development-with-nx 301 +/blog/2023-06-29-nx-console-gets-lit /blog/nx-console-gets-lit 301 +/blog/2023-04-19-nx-cloud-3 /blog/nx-cloud-3-0-faster-more-efficient-modernized 301 + +# --- decisionsSection --- +/concepts/more-concepts/why-monorepos /docs/concepts/decisions/why-monorepos 301 +/concepts/more-concepts/dependency-management /docs/concepts/decisions/dependency-management 301 +/concepts/more-concepts/code-sharing /docs/concepts/decisions/code-ownership 301 +/concepts/more-concepts/applications-and-libraries /docs/concepts/decisions/project-size 301 +/concepts/more-concepts/creating-libraries /docs/concepts/decisions/project-size 301 +/concepts/more-concepts/library-types /docs/concepts/decisions/project-dependency-rules 301 +/concepts/more-concepts/grouping-libraries /docs/concepts/decisions/folder-structure 301 +/concepts/more-concepts/turbo-and-nx /docs/guides/adopting-nx/from-turborepo 301 +/concepts/more-concepts/nx-daemon /docs/concepts/nx-daemon 301 +/concepts/more-concepts/buildable-and-publishable-libraries /docs/concepts/buildable-and-publishable-libraries 301 + +# --- featurePagesUpdate --- +/ci/troubleshooting/explain-with-ai /docs/features/ci-features/self-healing-ci 301 +/ci/concepts/ai-features /docs/features/ci-features/self-healing-ci 301 +/ci/concepts/nx-cloud-ai /docs/features/ci-features/self-healing-ci 301 +/concepts/ci-concepts/ai-features /docs/features/ci-features/self-healing-ci 301 + +# --- marketing --- +/conf https://monorepo.world 301 + +# --- enterpriseNxSection --- +/features/powerpack /docs/enterprise 301 +/features/powerpack/conformance /docs/enterprise/conformance 301 +/features/powerpack/owners /docs/enterprise/owners 301 +/features/powerpack/custom-caching /docs/guides/tasks--caching/self-hosted-caching 301 +/recipes/installation/activate-powerpack /docs/enterprise/activate-license 301 + +# --- manualDTEUpdate --- +/ci/recipes/enterprise/dte /docs/guides/nx-cloud/manual-dte 301 +/ci/recipes/enterprise/dte/github-dte /docs/guides/nx-cloud/manual-dte 301 +/ci/recipes/enterprise/dte/circle-ci-dte /docs/guides/nx-cloud/manual-dte 301 +/ci/recipes/enterprise/dte/azure-dte /docs/guides/nx-cloud/manual-dte 301 +/ci/recipes/enterprise/dte/bitbucket-dte /docs/guides/nx-cloud/manual-dte 301 +/ci/recipes/enterprise/dte/gitlab-dte /docs/guides/nx-cloud/manual-dte 301 +/ci/recipes/enterprise/dte/jenkins-dte /docs/guides/nx-cloud/manual-dte 301 +/showcase/benchmarks/dte /docs/reference/benchmarks/nx-agents 301 + +# --- powerpackRedirects --- +/powerpack/* /enterprise 301 +/nx-enterprise/powerpack/custom-caching /docs/guides/tasks--caching/self-hosted-caching 301 +/nx-enterprise/powerpack/free-licenses-and-trials /docs/enterprise 301 +/nx-api/powerpack-owners /nx-api/owners 301 +/nx-api/powerpack-owners/documents/overview /docs/reference/owners/overview 301 +/nx-api/powerpack-conformance /nx-api/conformance 301 +/nx-api/powerpack-conformance/documents/overview /nx-api/conformance/documents/overview 301 +/nx-api/powerpack-conformance/documents/create-conformance-rule /nx-api/conformance/documents/create-conformance-rule 301 +/nx-api/powerpack-azure-cache /nx-api/azure-cache 301 +/nx-api/powerpack-azure-cache/documents/overview /docs/reference/remote-cache-plugins/azure-cache/overview 301 +/nx-api/powerpack-gcs-cache /nx-api/gcs-cache 301 +/nx-api/powerpack-gcs-cache/documents/overview /docs/reference/remote-cache-plugins/gcs-cache/overview 301 +/nx-api/powerpack-s3-cache /nx-api/s3-cache 301 +/nx-api/powerpack-s3-cache/documents/overview /docs/reference/remote-cache-plugins/s3-cache/overview 301 +/nx-api/powerpack-shared-fs-cache /nx-api/shared-fs-cache 301 +/nx-api/powerpack-shared-fs-cache/documents/overview /docs/reference/remote-cache-plugins/shared-fs-cache/overview 301 +/docs/reference/powerpack/conformance /docs/reference/conformance 301 +/docs/reference/powerpack/conformance/overview /docs/reference/conformance/overview 301 +/docs/reference/powerpack/conformance/create-conformance-rule /docs/reference/conformance/create-conformance-rule 301 +/docs/reference/powerpack/conformance/executors /docs/reference/conformance/executors 301 +/docs/reference/powerpack/conformance/generators /docs/reference/conformance/generators 301 +/docs/reference/powerpack/owners /docs/reference/owners 301 +/docs/reference/powerpack/owners/overview /docs/reference/owners/overview 301 +/docs/reference/powerpack/owners/generators /docs/reference/owners/generators 301 +/docs/enterprise/powerpack /docs/enterprise 301 +/docs/enterprise/powerpack/conformance /docs/enterprise/conformance 301 +/docs/enterprise/powerpack/owners /docs/enterprise/owners 301 +/docs/enterprise/powerpack/configure-conformance-rules-in-nx-cloud /docs/enterprise/configure-conformance-rules-in-nx-cloud 301 +/docs/enterprise/powerpack/publish-conformance-rules-to-nx-cloud /docs/enterprise/publish-conformance-rules-to-nx-cloud 301 +/docs/enterprise/powerpack/licenses-and-trials /docs/enterprise 301 +/docs/enterprise/activate-powerpack /docs/enterprise/activate-license 301 + +# --- tmpTerminalUiRedirects --- +/terminal-ui /docs/guides/tasks--caching/terminal-ui 301 + +# --- legacyPluginOverviewRedirects --- +/cypress/overview /docs/technologies/test-tools/cypress/introduction 301 +/detox/overview /docs/technologies/test-tools/detox/introduction 301 +/jest/overview /docs/technologies/test-tools/jest/introduction 301 +/expo/overview /docs/technologies/react/expo/introduction 301 +/express/overview /docs/technologies/node/express/introduction 301 +/nest/overview /docs/technologies/node/nest/introduction 301 +/next/overview /docs/technologies/react/next/introduction 301 +/js/overview /docs/technologies/typescript/introduction 301 + +# --- deprecatedReferenceRedirects --- +/deprecated/global-implicit-dependencies /docs/reference/deprecated/global-implicit-dependencies 301 +/deprecated/affected-config /docs/reference/deprecated/affected-config 301 +/deprecated/custom-tasks-runner /docs/reference/deprecated/custom-tasks-runner 301 +/deprecated/legacy-cache /docs/reference/deprecated/legacy-cache 301 + +# --- commandRedirects --- +/nx/affected /docs/reference/nx-commands#nx-affected 301 + +# --- canonicalSiteRedirects --- +/blog/ /blog 301 +/technologies/java/gradle/introduction /docs/technologies/java/gradle/introduction 301 +/technologies/java/maven/introduction /docs/technologies/java/maven/introduction 301 + +# --- nxApiRedirects --- +/nx-api /docs/plugin-registry 301 +/nx-api/azure-cache/documents/overview /docs/reference/remote-cache-plugins/azure-cache/overview 301 +/nx-api/owners/documents/overview /docs/reference/owners/overview 301 +/nx-api/gcs-cache/documents/overview /docs/reference/remote-cache-plugins/gcs-cache/overview 301 +/nx-api/s3-cache/documents/overview /docs/reference/remote-cache-plugins/s3-cache/overview 301 +/nx-api/shared-fs-cache/documents/overview /docs/reference/remote-cache-plugins/shared-fs-cache/overview 301 +/nx-api/devkit/:slug* /reference/core-api/devkit/:slug* 301 +/nx-api/nx/:slug* /reference/core-api/nx/:slug* 301 +/nx-api/workspace/:slug* /reference/core-api/workspace/:slug* 301 +/nx-api/plugin/documents/:slug* /reference/core-api/plugin 301 +/nx-api/plugin/:slug* /reference/core-api/plugin/:slug* 301 +/nx-api/web/documents/:slug* /reference/core-api/web 301 +/nx-api/web/:slug* /reference/core-api/web/:slug* 301 +/nx-api/web /docs/technologies/build-tools/web/introduction 301 +/nx-api/azure-cache/:slug* /reference/core-api/azure-cache/:slug* 301 +/nx-api/conformance/:slug* /reference/core-api/conformance/:slug* 301 +/nx-api/owners/:slug* /reference/core-api/owners/:slug* 301 +/nx-api/gcs-cache/:slug* /reference/core-api/gcs-cache/:slug* 301 +/nx-api/s3-cache/:slug* /reference/core-api/s3-cache/:slug* 301 +/nx-api/shared-fs-cache/:slug* /reference/core-api/shared-fs-cache/:slug* 301 +/nx-api/create-nx-plugin/:slug* /reference/core-api 301 +/nx-api/create-nx-workspace/migrations/:slug* /reference/core-api 301 +/nx-api/create-nx-workspace/generators/:slug* /reference/core-api 301 +/nx-api/create-nx-workspace/executors/:slug* /reference/core-api 301 +/nx-api/create-nx-workspace/documents /docs/reference 301 +/nx-api/create-nx-workspace/:slug* /reference/core-api/create-nx-workspace/:slug* 301 +/nx-api/angular-rspack/documents/create-config /docs/technologies/angular/angular-rspack/create-config 301 +/nx-api/angular-rspack/documents/create-server /docs/technologies/angular/angular-rspack/create-server 301 +/nx-api/angular-rsbuild/documents/create-config /docs/technologies/angular/angular-rsbuild/create-config 301 +/nx-api/angular-rsbuild/documents/create-server /docs/technologies/angular/angular-rsbuild/create-server 301 +/nx-api/angular-rspack/documents /docs/technologies/angular/angular-rspack/introduction 301 +/nx-api/angular-rsbuild/documents /docs/technologies/angular/angular-rsbuild/create-config 301 +/nx-api/angular-rspack/executors /docs/technologies/angular/angular-rspack/guides/getting-started 301 +/nx-api/angular-rsbuild/executors /docs/technologies/angular/angular-rsbuild/create-config 301 +/nx-api/angular-rspack /docs/technologies/angular/angular-rspack/introduction 301 +/nx-api/angular-rsbuild /docs/technologies/angular/angular-rsbuild/create-config 301 +/nx-api/angular-rspack/migrations /docs/technologies/angular/angular-rspack/guides/getting-started 301 +/nx-api/angular-rsbuild/migrations /docs/technologies/angular/angular-rsbuild/create-config 301 +/nx-api/angular-rspack/generators /docs/technologies/angular/angular-rspack/guides/getting-started 301 +/nx-api/angular-rsbuild/generators /docs/technologies/angular/angular-rsbuild/create-config 301 +/nx-api/angular/documents/overview /docs/technologies/angular/introduction 301 +/nx-api/angular /docs/technologies/angular/introduction 301 +/nx-api/react/documents/overview /docs/technologies/react/introduction 301 +/nx-api/react /docs/technologies/react/introduction 301 +/nx-api/react-native/documents/overview /docs/technologies/react/react-native/introduction 301 +/nx-api/react-native /docs/technologies/react/react-native/introduction 301 +/nx-api/vue/documents /docs/technologies/vue/introduction 301 +/nx-api/vue/documents/overview /docs/technologies/vue/introduction 301 +/nx-api/vue /docs/technologies/vue/introduction 301 +/nx-api/next/documents/overview /docs/technologies/react/next/introduction 301 +/nx-api/next /docs/technologies/react/next/introduction 301 +/nx-api/remix/documents/overview /docs/technologies/react/remix/introduction 301 +/nx-api/remix /docs/technologies/react/remix/introduction 301 +/nx-api/nuxt/documents/overview /docs/technologies/vue/nuxt/introduction 301 +/nx-api/nuxt /docs/technologies/vue/nuxt/introduction 301 +/nx-api/expo/documents/overview /docs/technologies/react/expo/introduction 301 +/nx-api/expo /docs/technologies/react/expo/introduction 301 +/nx-api/nest/documents /docs/technologies/node/nest/introduction 301 +/nx-api/nest/documents/overview /docs/technologies/node/nest/introduction 301 +/nx-api/nest /docs/technologies/node/nest/introduction 301 +/nx-api/express/documents /docs/technologies/node/express/introduction 301 +/nx-api/express/documents/overview /docs/technologies/node/express/introduction 301 +/nx-api/express /docs/technologies/node/express/introduction 301 +/nx-api/node/documents/overview /docs/technologies/node/introduction 301 +/nx-api/node /docs/technologies/node/introduction 301 +/nx-api/webpack/documents/overview /docs/technologies/build-tools/webpack/introduction 301 +/nx-api/webpack /docs/technologies/build-tools/webpack/introduction 301 +/nx-api/vite/documents/overview /docs/technologies/build-tools/vite/introduction 301 +/nx-api/vite /docs/technologies/build-tools/vite/introduction 301 +/nx-api/rollup/documents/overview /docs/technologies/build-tools/rollup/introduction 301 +/nx-api/rollup /docs/technologies/build-tools/rollup/introduction 301 +/nx-api/esbuild/documents/overview /docs/technologies/build-tools/esbuild/introduction 301 +/nx-api/esbuild /docs/technologies/build-tools/esbuild/introduction 301 +/nx-api/rspack/documents/overview /docs/technologies/build-tools/rspack/introduction 301 +/nx-api/rspack /docs/technologies/build-tools/rspack/introduction 301 +/nx-api/rsbuild/documents/overview /docs/technologies/build-tools/rsbuild/introduction 301 +/nx-api/rsbuild /docs/technologies/build-tools/rsbuild/introduction 301 +/nx-api/cypress/documents/overview /docs/technologies/test-tools/cypress/introduction 301 +/nx-api/jest/documents/overview /docs/technologies/test-tools/jest/introduction 301 +/nx-api/playwright/documents/overview /docs/technologies/test-tools/playwright/introduction 301 +/nx-api/storybook/documents/overview /docs/technologies/test-tools/storybook/introduction 301 +/nx-api/storybook /docs/technologies/test-tools/storybook/introduction 301 +/nx-api/detox/documents/overview /docs/technologies/test-tools/detox/introduction 301 +/nx-api/detox /docs/technologies/test-tools/detox/introduction 301 +/nx-api/js/documents/overview /docs/technologies/typescript/introduction 301 +/nx-api/js /docs/technologies/typescript/introduction 301 +/nx-api/gradle/documents /docs/technologies/java/gradle/introduction 301 +/nx-api/gradle/documents/overview /docs/technologies/java/gradle/introduction 301 +/nx-api/gradle /docs/technologies/java/gradle/introduction 301 +/nx-api/eslint/documents/overview /docs/technologies/eslint/introduction 301 +/nx-api/eslint-plugin/documents/overview /docs/technologies/eslint/eslint-plugin 301 +/nx-api/module-federation/documents/overview /docs/technologies/module-federation/introduction 301 +/nx-api/module-federation /docs/technologies/module-federation/introduction 301 +/nx-api/vitest /docs/technologies/test-tools/vitest/introduction 301 +/nx-api/vitest/generators/configuration /docs/technologies/test-tools/vitest/guides 301 +/nx-api/angular/documents/:slug* /technologies/angular/recipes/:slug* 301 +/nx-api/angular/:slug* /technologies/angular/api/:slug* 301 +/nx-api/react/documents/:slug* /technologies/react/recipes/:slug* 301 +/nx-api/react/:slug* /technologies/react/api/:slug* 301 +/nx-api/react-native/documents/:slug* /technologies/react/react-native/recipes/:slug* 301 +/nx-api/react-native/:slug* /technologies/react/react-native/api/:slug* 301 +/nx-api/vue/documents/:slug* /technologies/vue/recipes/:slug* 301 +/nx-api/vue/:slug* /technologies/vue/api/:slug* 301 +/nx-api/next/documents/:slug* /technologies/react/next/recipes/:slug* 301 +/nx-api/next/:slug* /technologies/react/next/api/:slug* 301 +/nx-api/remix/documents/:slug* /technologies/react/remix/recipes/:slug* 301 +/nx-api/remix/:slug* /technologies/react/remix/api/:slug* 301 +/nx-api/nuxt/documents/:slug* /technologies/vue/nuxt/recipes/:slug* 301 +/nx-api/nuxt/:slug* /technologies/vue/nuxt/api/:slug* 301 +/nx-api/expo/documents/:slug* /technologies/react/expo/recipes/:slug* 301 +/nx-api/expo/:slug* /technologies/react/expo/api/:slug* 301 +/nx-api/nest/documents/:slug* /technologies/nest/recipes/:slug* 301 +/nx-api/nest/:slug* /technologies/node/nest/api/:slug* 301 +/nx-api/express/documents/:slug* /technologies/node/express/recipes/:slug* 301 +/nx-api/express/:slug* /technologies/node/express/api/:slug* 301 +/nx-api/node/documents/:slug* /technologies/node/recipes/:slug* 301 +/nx-api/node/:slug* /technologies/node/api/:slug* 301 +/nx-api/webpack/documents/:slug* /technologies/build-tools/webpack/recipes/:slug* 301 +/nx-api/webpack/:slug* /technologies/build-tools/webpack/api/:slug* 301 +/nx-api/vite/documents/:slug* /technologies/build-tools/vite/recipes/:slug* 301 +/nx-api/vite/:slug* /technologies/build-tools/vite/api/:slug* 301 +/nx-api/rollup/documents/:slug* /technologies/build-tools/rollup/recipes/:slug* 301 +/nx-api/rollup/:slug* /technologies/build-tools/rollup/api/:slug* 301 +/nx-api/esbuild/documents/:slug* /technologies/build-tools/esbuild/recipes/:slug* 301 +/nx-api/esbuild/:slug* /technologies/build-tools/esbuild/api/:slug* 301 +/nx-api/rspack/documents/:slug* /technologies/build-tools/rspack/recipes/:slug* 301 +/nx-api/rspack/:slug* /technologies/build-tools/rspack/api/:slug* 301 +/nx-api/rsbuild/documents/:slug* /technologies/build-tools/rsbuild/recipes/:slug* 301 +/nx-api/rsbuild/:slug* /technologies/build-tools/rsbuild/api/:slug* 301 +/nx-api/cypress/documents/:slug* /technologies/test-tools/cypress/recipes/:slug* 301 +/nx-api/cypress/:slug* /technologies/test-tools/cypress/api/:slug* 301 +/nx-api/jest/documents/:slug* /technologies/test-tools/jest/recipes/:slug* 301 +/nx-api/jest/:slug* /technologies/test-tools/jest/api/:slug* 301 +/nx-api/playwright/documents/:slug* /technologies/test-tools/playwright/recipes/:slug* 301 +/nx-api/playwright/:slug* /technologies/test-tools/playwright/api/:slug* 301 +/nx-api/storybook/documents/:slug* /technologies/test-tools/storybook/recipes/:slug* 301 +/nx-api/storybook/:slug* /technologies/test-tools/storybook/api/:slug* 301 +/nx-api/detox/documents/:slug* /technologies/test-tools/detox/recipes/:slug* 301 +/nx-api/detox/:slug* /technologies/test-tools/detox/api/:slug* 301 +/nx-api/js/documents/:slug* /technologies/typescript/recipes/:slug* 301 +/nx-api/js/:slug* /technologies/typescript/api/:slug* 301 +/nx-api/gradle/documents/:slug* /technologies/java/recipes/:slug* 301 +/nx-api/gradle/:slug* /technologies/java/api/:slug* 301 +/nx-api/eslint/documents/:slug* /technologies/eslint/recipes/:slug* 301 +/nx-api/eslint/:slug* /technologies/eslint/api/:slug* 301 +/nx-api/eslint-plugin/documents/:slug* /technologies/eslint/eslint-plugin/recipes/:slug* 301 +/nx-api/eslint-plugin/:slug* /technologies/eslint/eslint-plugin/api/:slug* 301 +/nx-api/module-federation/documents/:slug* /technologies/module-federation/recipes/:slug* 301 +/nx-api/module-federation/:slug* /technologies/module-federation/api/:slug* 301 + +# --- nxRecipesRedirects --- +/recipes/module-federation /docs/technologies/module-federation/guides/create-a-host 301 +/recipes/react /docs/technologies/react/guides/adding-assets-react 301 +/recipes/angular /docs/technologies/angular/guides/angular-nx-version-matrix 301 +/recipes/node /docs/technologies/node/guides/application-proxies 301 +/recipes/storybook /docs/technologies/test-tools/storybook/guides 301 +/recipes/cypress /docs/technologies/test-tools/cypress/guides/cypress-component-testing 301 +/recipes/next /docs/technologies/react/next/guides 301 +/recipes/nuxt /docs/technologies/vue/nuxt/guides 301 +/recipes/vite /docs/technologies/build-tools/vite/guides 301 +/recipes/webpack /docs/technologies/build-tools/webpack/guides 301 +/recipes/module-federation/:slug* /technologies/module-federation/recipes/:slug* 301 +/recipes/react/:slug* /technologies/react/recipes/:slug* 301 +/recipes/node/:slug* /technologies/node/recipes/:slug* 301 +/recipes/storybook/:slug* /technologies/test-tools/storybook/recipes/:slug* 301 +/recipes/cypress/:slug* /technologies/test-tools/cypress/recipes/:slug* 301 +/recipes/next/:slug* /technologies/react/next/recipes/:slug* 301 +/recipes/nuxt/:slug* /technologies/vue/nuxt/recipes/:slug* 301 +/recipes/vite/:slug* /technologies/build-tools/vite/recipes/:slug* 301 +/recipes/webpack/:slug* /technologies/build-tools/webpack/recipes/:slug* 301 +/recipes/angular/rspack /docs/technologies/angular/angular-rspack/guides/getting-started 301 +/recipes/angular/rspack/introduction /docs/technologies/angular/angular-rspack/introduction 301 +/recipes/angular/rspack/:slug* /technologies/angular/angular-rspack/recipes/:slug* 301 +/recipes/angular/migration /docs/technologies/angular/migration 301 +/recipes/angular/migration/angular /docs/technologies/angular 301 +/recipes/angular/migration/angular-multiple /docs/technologies/angular/migration/angular-multiple 301 +/recipes/angular/:slug* /technologies/angular/recipes/:slug* 301 +/recipes/tips-n-tricks/eslint /docs/technologies/eslint 301 +/recipes/tips-n-tricks/flat-config /docs/technologies/eslint/guides/flat-config 301 +/recipes/tips-n-tricks/switch-to-workspaces-project-references /docs/technologies/typescript/guides/switch-to-workspaces-project-references 301 +/recipes/tips-n-tricks/enable-tsc-batch-mode /docs/technologies/typescript/guides/enable-tsc-batch-mode 301 +/recipes/tips-n-tricks/define-secondary-entrypoints /docs/technologies/typescript/guides/define-secondary-entrypoints 301 +/recipes/tips-n-tricks/compile-multiple-formats /docs/technologies/typescript/guides/compile-multiple-formats 301 +/recipes/tips-n-tricks/js-and-ts /docs/technologies/typescript/guides/js-and-ts 301 + +# --- nxModuleFederationConceptsRedirects --- +/concepts/module-federation/:slug* /technologies/module-federation/concepts/:slug* 301 + +# --- gettingStartedRedirects --- +/getting-started/why-nx /docs/getting-started/intro 301 + +# --- pricingRedirects --- +/pricing /nx-cloud#plans 301 + +# --- ciTutorialRedirects --- +/ci/intro/tutorials/circle /docs/guides/nx-cloud/setup-ci 301 +/ci/intro/tutorials/github-actions /ci/recipes/set-up/monorepo-ci-github-actions 301 + +# --- dockerReleaseRedirect --- +/recipes/nx-release/get-started-with-nx-release /docs/guides/nx-release/release-npm-packages 301 + +# --- docsToAstroRedirects --- +/technologies/test-tools/cypress/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/test-tools/detox/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/eslint/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/react/expo/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/test-tools/jest/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/react/next/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/test-tools/playwright/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/react/react-native/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/react/remix/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/build-tools/rollup/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/build-tools/rspack/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/test-tools/storybook/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/build-tools/vite/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/technologies/build-tools/webpack/api/generators/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/reference/core-api/devkit/documents/README /docs/reference/devkit 301 +/reference/core-api/devkit/documents/ngcli_adapter/README /docs/reference/devkit/ngcli_adapter 301 +/reference/core-api/devkit/documents/runTasksInSerial /docs/reference/benchmarks/caching 301 +/reference/core-api/devkit/documents/serializeJson /docs/reference/benchmarks/caching 301 +/reference/core-api/devkit/documents/stripIndents /docs/reference/benchmarks/caching 301 +/reference/core-api/devkit/documents/:slug* /docs/reference/devkit/:slug* 301 +/reference/core-api/nx/documents/:slug* /docs/reference/nx-commands 301 +/technologies/react/expo/api/executors/:slug* /docs/technologies/react/expo/executors 301 +/technologies/angular/api/executors/:slug* /docs/technologies/angular/executors 301 +/technologies/react/react-native/api/executors/:slug* /docs/technologies/react/react-native/executors 301 +/technologies/typescript/api/executors/:slug* /docs/technologies/typescript/executors 301 +/technologies/build-tools/rspack/api/executors/:slug* /docs/technologies/build-tools/rspack/executors 301 +/technologies/build-tools/vite/api/executors/:slug* /docs/technologies/build-tools/vite/executors 301 +/technologies/build-tools/webpack/api/executors/:slug* /docs/technologies/build-tools/webpack/executors 301 +/technologies/react/api/executors/:slug* /docs/technologies/react/executors 301 +/technologies/test-tools/detox/api/executors/:slug* /docs/technologies/test-tools/detox/executors 301 +/technologies/react/next/api/executors/:slug* /docs/technologies/react/next/executors 301 +/technologies/react/remix/api/executors/:slug* /docs/technologies/react/remix/executors 301 +/technologies/test-tools/storybook/api/executors/:slug* /docs/technologies/test-tools/storybook/executors 301 +/technologies/test-tools/cypress/api/executors/:slug* /docs/technologies/test-tools/cypress/executors 301 +/technologies/test-tools/jest/api/executors/:slug* /docs/technologies/test-tools/jest/executors 301 +/technologies/test-tools/playwright/api/executors/:slug* /docs/technologies/test-tools/playwright/executors 301 +/technologies/build-tools/rollup/api/executors/:slug* /docs/technologies/build-tools/rollup/executors 301 +/technologies/eslint/api/executors/:slug* /docs/technologies/eslint/executors 301 +/technologies/angular/api/generators/:slug* /docs/technologies/angular/generators 301 +/technologies/node/nest/api/generators/:slug* /docs/technologies/node/nest/generators 301 +/technologies/react/api/generators/:slug* /docs/technologies/react/generators 301 +/technologies/typescript/api/generators/:slug* /docs/technologies/typescript/generators 301 +/technologies/vue/api/generators/:slug* /docs/technologies/vue/generators 301 +/technologies/node/api/generators/:slug* /docs/technologies/node/generators 301 +/technologies/vue/nuxt/api/generators/:slug* /docs/technologies/vue/nuxt/generators 301 +/technologies/build-tools/esbuild/api/generators/:slug* /docs/technologies/build-tools/esbuild/generators 301 +/technologies/node/express/api/generators/:slug* /docs/technologies/node/express/generators 301 +/technologies/build-tools/rsbuild/api/generators/:slug* /docs/technologies/build-tools/rsbuild/generators 301 +/technologies/java/api/generators/:slug* /docs/technologies/java/generators 301 +/technologies/react/remix/api/generators/:slug* /docs/technologies/react/remix/generators 301 +/technologies/react/next/api/generators/:slug* /docs/technologies/react/next/generators 301 +/technologies/build-tools/rspack/api/generators/:slug* /docs/technologies/build-tools/rspack/generators 301 +/technologies/react/react-native/api/generators/:slug* /docs/technologies/react/react-native/generators 301 +/technologies/test-tools/cypress/api/generators/:slug* /docs/technologies/test-tools/cypress/generators 301 +/technologies/eslint/api/generators/:slug* /docs/technologies/eslint/generators 301 +/technologies/react/expo/api/generators/:slug* /docs/technologies/react/expo/generators 301 +/technologies/test-tools/storybook/api/generators/:slug* /docs/technologies/test-tools/storybook/generators 301 +/technologies/build-tools/vite/api/generators/:slug* /docs/technologies/build-tools/vite/generators 301 +/technologies/build-tools/webpack/api/generators/:slug* /docs/technologies/build-tools/webpack/generators 301 +/technologies/test-tools/detox/api/generators/:slug* /docs/technologies/test-tools/detox/generators 301 +/technologies/test-tools/jest/api/generators/:slug* /docs/technologies/test-tools/jest/generators 301 +/technologies/test-tools/playwright/api/generators/:slug* /docs/technologies/test-tools/playwright/generators 301 +/technologies/build-tools/rollup/api/generators/:slug* /docs/technologies/build-tools/rollup/generators 301 +/getting-started/* /docs/getting-started/intro 301 +/ci/getting-started /docs/getting-started/nx-cloud 301 +/ci/getting-started/intro /docs/getting-started/nx-cloud 301 +/ci/features /docs/features/ci-features 301 +/ci/features/self-healing-ci /docs/features/ci-features/self-healing-ci 301 +/ci/features/remote-cache /docs/features/ci-features/remote-cache 301 +/ci/features/distribute-task-execution /docs/features/ci-features/distribute-task-execution 301 +/ci/features/affected /docs/features/ci-features/affected 301 +/ci/features/dynamic-agents /docs/features/ci-features/dynamic-agents 301 +/ci/features/split-e2e-tasks /docs/features/ci-features/split-e2e-tasks 301 +/ci/features/flaky-tasks /docs/features/ci-features/flaky-tasks 301 +/ci/features/explain-with-ai /docs/features/ci-features/self-healing-ci 301 +/ci/features/github-integration /docs/features/ci-features/github-integration 301 +/ci/concepts /docs/concepts/ci-concepts 301 +/ci/concepts/building-blocks-fast-ci /docs/concepts/ci-concepts/building-blocks-fast-ci 301 +/ci/concepts/reduce-waste /docs/concepts/ci-concepts/reduce-waste 301 +/ci/concepts/parallelization-distribution /docs/concepts/ci-concepts/parallelization-distribution 301 +/ci/concepts/cache-security /docs/concepts/ci-concepts/cache-security 301 +/ci/concepts/heartbeat /docs/concepts/ci-concepts/heartbeat-and-manual-shutdown-handling 301 +/ci/recipes/security/google-auth /docs/guides/nx-cloud/google-auth 301 +/ci/recipes/security/access-tokens /docs/guides/nx-cloud/access-tokens 301 +/ci/recipes/security/personal-access-tokens /docs/guides/nx-cloud/personal-access-tokens 301 +/ci/recipes/security/encryption /docs/guides/nx-cloud/encryption 301 +/ci/recipes/source-control-integration /docs/guides/nx-cloud/source-control-integration 301 +/ci/recipes/source-control-integration/* /docs/guides/nx-cloud/setup-ci 301 +/ci/recipes/enterprise /docs/enterprise 301 +/ci/recipes/enterprise/single-tenant/auth-saml /docs/enterprise/single-tenant 301 +/ci/recipes/enterprise/single-tenant/* /docs/enterprise/single-tenant/:splat 301 +/ci/recipes/enterprise/conformance /docs/enterprise/conformance 301 +/ci/recipes/enterprise/conformance/configure-conformance-rules-in-nx-cloud /docs/enterprise/configure-conformance-rules-in-nx-cloud 301 +/ci/recipes/enterprise/conformance/publish-conformance-rules-to-nx-cloud /docs/enterprise/publish-conformance-rules-to-nx-cloud 301 +/ci/recipes/enterprise/polygraph /docs/enterprise/polygraph 301 +/ci/recipes/enterprise/metadata-only-workspace /docs/enterprise/metadata-only-workspace 301 +/ci/recipes/enterprise/custom-workflows /docs/enterprise/custom-workflows 301 +/ci/recipes/other/record-commands /docs/guides/nx-cloud/record-commands 301 +/ci/recipes/other/ci-deployment /docs/guides/ci-deployment 301 +/ci/recipes/other/cipe-affected-project-graph /docs/guides/nx-cloud/cipe-affected-project-graph 301 +/ci/reference /docs/reference 301 +/ci/reference/config /docs/reference/nx-cloud/config 301 +/ci/reference/nx-cloud-cli /docs/reference/nx-cloud-cli 301 +/ci/reference/launch-templates /docs/reference/nx-cloud/launch-templates 301 +/ci/troubleshooting /docs/troubleshooting 301 +/ci/troubleshooting/ci-execution-failed /docs/troubleshooting/ci-execution-failed 301 +/ci/recipes/enterprise/single-tenant /docs/enterprise/single-tenant/overview 301 +/ci/reference/assignment-rules /docs/reference/nx-cloud/assignment-rules 301 +/ci/reference/custom-steps /docs/reference/nx-cloud/custom-steps 301 +/ci/reference/custom-images /docs/reference/nx-cloud/custom-images 301 +/ci/reference/env-vars /docs/reference/environment-variables 301 +/ci/reference/credits-pricing /docs/reference/nx-cloud/credits-pricing 301 +/ci/reference/release-notes /docs/reference/nx-cloud/release-notes 301 +/concepts /docs/concepts 301 +/concepts/* /docs/concepts/:splat 301 +/extending-nx/intro/getting-started /docs/extending-nx/intro 301 +/extending-nx/api/nx-devkit/overview /docs/extending-nx 301 +/extending-nx/api/plugin/overview /docs/extending-nx 301 +/extending-nx/tutorials /docs/extending-nx 301 +/extending-nx/tutorials/organization-specific-plugin /docs/extending-nx/organization-specific-plugin 301 +/extending-nx/tutorials/tooling-plugin /docs/extending-nx/tooling-plugin 301 +/extending-nx/recipes /docs/extending-nx 301 +/extending-nx/recipes/generator-options /docs/extending-nx 301 +/extending-nx/api /docs/extending-nx 301 +/extending-nx/api/nx-devkit /docs/extending-nx 301 +/extending-nx/api/nx-devkit/ngcli-adapter /docs/extending-nx 301 +/extending-nx/api/plugin /docs/extending-nx 301 +/extending-nx /docs/extending-nx 301 +/extending-nx/* /docs/extending-nx/:splat 301 +/features/enhance-AI /docs/features/enhance-ai 301 +/features/maintain-ts-monorepos /docs/features/maintain-typescript-monorepos 301 +/features /docs/features 301 +/features/* /docs/features/:splat 301 +/getting-started /docs/getting-started/intro 301 +/getting-started/intro /docs/getting-started/intro 301 +/getting-started/installation /docs/getting-started/installation 301 +/getting-started/start-new-project /docs/getting-started/start-new-project 301 +/getting-started/editor-setup /docs/getting-started/editor-setup 301 +/getting-started/tutorials /docs/getting-started/tutorials 301 +/getting-started/adding-to-existing /docs/getting-started/start-with-existing-project 301 +/getting-started/ai-integration /docs/getting-started/ai-setup 301 +/getting-started/tutorials/typescript-packages-tutorial /docs/getting-started/tutorials/typescript-packages-tutorial 301 +/getting-started/tutorials/react-monorepo-tutorial /docs/getting-started/tutorials/react-monorepo-tutorial 301 +/getting-started/tutorials/angular-monorepo-tutorial /docs/getting-started/tutorials/angular-monorepo-tutorial 301 +/getting-started/tutorials/gradle-tutorial /docs/getting-started/tutorials/gradle-tutorial 301 +/nx-enterprise /docs/enterprise 301 +/nx-enterprise/activate-powerpack /docs/enterprise/activate-license 301 +/nx-enterprise/activate-license /docs/enterprise/activate-license 301 +/nx-enterprise/powerpack/licenses-and-trials /docs/enterprise 301 +/nx-enterprise/powerpack/conformance /docs/enterprise/conformance 301 +/nx-enterprise/powerpack/owners /docs/enterprise/owners 301 +/nx-enterprise/conformance /docs/enterprise/conformance 301 +/nx-enterprise/owners /docs/enterprise/owners 301 +/nx-enterprise/powerpack /docs/enterprise 301 +/plugin-registry /docs/plugin-registry 301 +/recipes /docs/guides 301 +/recipes/running-tasks /docs/guides/tasks--caching 301 +/recipes/tips-n-tricks /docs/guides/tips-n-tricks 301 +/recipes/installation /docs/getting-started/installation 301 +/recipes/installation/install-non-javascript /docs/guides/installation/install-non-javascript 301 +/recipes/installation/update-global-installation /docs/guides/installation/update-global-installation 301 +/recipes/running-tasks/configure-inputs /docs/guides/tasks--caching/configure-inputs 301 +/recipes/running-tasks/configure-outputs /docs/guides/tasks--caching/configure-outputs 301 +/recipes/running-tasks/defining-task-pipeline /docs/guides/tasks--caching/defining-task-pipeline 301 +/recipes/running-tasks/terminal-ui /docs/guides/tasks--caching/terminal-ui 301 +/recipes/running-tasks/run-commands-executor /docs/guides/tasks--caching/run-commands-executor 301 +/recipes/running-tasks/pass-args-to-commands /docs/guides/tasks--caching/pass-args-to-commands 301 +/recipes/running-tasks/run-tasks-in-parallel /docs/guides/tasks--caching/run-tasks-in-parallel 301 +/recipes/running-tasks/root-level-scripts /docs/guides/tasks--caching/root-level-scripts 301 +/recipes/running-tasks/workspace-watching /docs/guides/tasks--caching/workspace-watching 301 +/recipes/running-tasks/reduce-repetitive-configuration /docs/guides/tasks--caching/reduce-repetitive-configuration 301 +/recipes/running-tasks/change-cache-location /docs/guides/tasks--caching/change-cache-location 301 +/recipes/running-tasks/skipping-cache /docs/guides/tasks--caching/skipping-cache 301 +/recipes/running-tasks/convert-to-inferred /docs/guides/tasks--caching/convert-to-inferred 301 +/recipes/running-tasks/self-hosted-caching /docs/guides/tasks--caching/self-hosted-caching 301 +/recipes/adopting-nx/* /docs/guides/adopting-nx/:splat 301 +/recipes/nx-release/* /docs/guides/nx-release/:splat 301 +/recipes/nx-console/* /docs/guides/nx-console/:splat 301 +/recipes/enforce-module-boundaries /docs/features/enforce-module-boundaries 301 +/recipes/enforce-module-boundaries/* /docs/guides/enforce-module-boundaries/:splat 301 +/recipes/tips-n-tricks/* /docs/guides/tips-n-tricks/:splat 301 +/recipes/adopting-nx /docs/guides/adopting-nx 301 +/recipes/nx-release /docs/guides/nx-release 301 +/recipes/nx-console /docs/guides/nx-console 301 +/reference /docs/reference 301 +/reference/nx-commands /docs/reference/nx-commands 301 +/reference/nx-json /docs/reference/nx-json 301 +/reference/project-configuration /docs/reference/project-configuration 301 +/reference/inputs /docs/reference/inputs 301 +/reference/nxignore /docs/reference/nxignore 301 +/reference/environment-variables /docs/reference/environment-variables 301 +/reference/glossary /docs/reference/glossary 301 +/reference/releases /docs/reference/releases 301 +/reference/core-api/owners /docs/reference/owners 301 +/reference/core-api/owners/overview /docs/reference/owners/overview 301 +/reference/core-api/conformance /docs/reference/conformance 301 +/reference/core-api/conformance/overview /docs/reference/conformance/overview 301 +/reference/core-api/conformance/create-conformance-rule /docs/reference/conformance/create-conformance-rule 301 +/reference/core-api/azure-cache /docs/reference/remote-cache-plugins/azure-cache 301 +/reference/core-api/azure-cache/overview /docs/reference/remote-cache-plugins/azure-cache/overview 301 +/reference/core-api/gcs-cache /docs/reference/remote-cache-plugins/gcs-cache 301 +/reference/core-api/gcs-cache/overview /docs/reference/remote-cache-plugins/gcs-cache/overview 301 +/reference/core-api/s3-cache /docs/reference/remote-cache-plugins/s3-cache 301 +/reference/core-api/s3-cache/overview /docs/reference/remote-cache-plugins/s3-cache/overview 301 +/reference/core-api/shared-fs-cache /docs/reference/remote-cache-plugins/shared-fs-cache 301 +/reference/core-api/shared-fs-cache/overview /docs/reference/remote-cache-plugins/shared-fs-cache/overview 301 +/reference/core-api/devkit/documents/Migration /docs/reference/devkit/migration 301 +/reference/core-api/workspace/documents/overview /docs/reference/conformance/overview 301 +/reference/core-api/conformance/documents/overview /docs/reference/conformance/overview 301 +/reference/core-api/conformance/documents/create-conformance-rule /docs/reference/conformance/create-conformance-rule 301 +/reference/core-api/conformance/executors /docs/reference/conformance/executors 301 +/reference/core-api/owners/generators /docs/reference/owners/generators 301 +/reference/core-api/owners/generators/* /docs/reference/owners/generators 301 +/reference/core-api/shared-fs-cache/generators /docs/reference/remote-cache-plugins/shared-fs-cache/generators 301 +/reference/core-api /docs/reference 301 +/reference/core-api/nx /docs/reference/nx 301 +/reference/core-api/workspace /docs/reference/workspace 301 +/reference/core-api/plugin /docs/reference/plugin 301 +/reference/core-api/web /docs/reference/web 301 +/reference/core-api/create-nx-workspace /docs/reference/create-nx-workspace 301 +/reference/core-api/devkit/documents /docs/reference/devkit 301 +/reference/core-api/devkit /docs/reference/devkit 301 +/reference/core-api/devkit/executors /docs/reference/devkit 301 +/reference/core-api/devkit/generators /docs/reference/devkit 301 +/reference/core-api/devkit/migrations /docs/reference/devkit 301 +/reference/core-api/nx/documents /docs/reference/nx-commands 301 +/reference/core-api/nx/documents/create-nx-workspace https://canary.nx.dev/docs/reference/create-nx-workspace 301 +/reference/core-api/nx/executors /docs/reference/nx/executors 301 +/reference/core-api/nx/executors/* /docs/reference/nx/executors 301 +/reference/core-api/nx/generators /docs/reference/nx/generators 301 +/reference/core-api/nx/generators/connect-to-nx-cloud /docs/reference/nx/generators 301 +/reference/core-api/nx/migrations /docs/reference/nx/migrations 301 +/reference/core-api/plugin/executors /reference/plugin/executors 301 +/reference/core-api/plugin/generators /docs/reference/plugin/generators 301 +/reference/core-api/plugin/generators/* /docs/reference/plugin/generators 301 +/reference/core-api/plugin/migrations /reference/plugin/migrations 301 +/reference/core-api/web/executors /docs/reference/web/executors 301 +/reference/core-api/web/executors/file-server /docs/reference/web/executors 301 +/reference/core-api/web/generators /docs/reference/web/generators 301 +/reference/core-api/web/generators/* /docs/reference/web/generators 301 +/reference/core-api/web/migrations /reference/web/migrations 301 +/reference/core-api/workspace/documents /docs/reference/workspace 301 +/reference/core-api/workspace/documents/nx-nodejs-typescript-version-matrix /docs/reference/nodejs-typescript-compatibility 301 +/reference/core-api/workspace/executors /reference/workspace/executors 301 +/reference/core-api/workspace/executors/counter /reference/workspace/executors 301 +/reference/core-api/workspace/generators /docs/reference/workspace/generators 301 +/reference/core-api/workspace/generators/* /docs/reference/workspace/generators 301 +/reference/core-api/workspace/migrations /docs/reference/workspace/migrations 301 +/reference/core-api/azure-cache/executors /docs/reference/remote-cache-plugins/azure-cache/overview 301 +/reference/core-api/azure-cache/generators /docs/reference/remote-cache-plugins/azure-cache/overview 301 +/reference/core-api/azure-cache/migrations /docs/reference/remote-cache-plugins/azure-cache/overview 301 +/reference/core-api/conformance/documents /docs/reference/conformance/overview 301 +/reference/core-api/conformance/generators /docs/reference/conformance/generators 301 +/reference/core-api/conformance/generators/* /docs/reference/conformance/generators 301 +/reference/core-api/conformance/migrations /docs/reference/conformance/overview 301 +/reference/core-api/owners/executors /docs/reference/owners/overview 301 +/reference/core-api/owners/migrations /docs/reference/owners/overview 301 +/reference/core-api/gcs-cache/executors /docs/reference/remote-cache-plugins/gcs-cache 301 +/reference/core-api/gcs-cache/generators /docs/reference/remote-cache-plugins/gcs-cache 301 +/reference/core-api/gcs-cache/migrations /docs/reference/remote-cache-plugins/gcs-cache 301 +/reference/core-api/s3-cache/executors /docs/reference/remote-cache-plugins/s3-cache 301 +/reference/core-api/s3-cache/generators /docs/reference/remote-cache-plugins/s3-cache 301 +/reference/core-api/s3-cache/migrations /docs/reference/remote-cache-plugins/s3-cache 301 +/reference/core-api/shared-fs-cache/executors /docs/reference/remote-cache-plugins/shared-fs-cache/overview 301 +/reference/core-api/shared-fs-cache/generators/init /docs/reference/remote-cache-plugins/shared-fs-cache/generators 301 +/reference/core-api/shared-fs-cache/migrations /docs/reference/remote-cache-plugins/shared-fs-cache/overview 301 +/showcase/benchmarks/tsc-batch-mode /docs/reference/benchmarks/tsc-batch-mode 301 +/showcase/benchmarks/caching /docs/reference/benchmarks/caching 301 +/showcase/benchmarks/nx-agents /docs/reference/benchmarks/nx-agents 301 +/showcase/benchmarks /docs/reference/benchmarks 301 +/technologies /docs/technologies 301 +/technologies/typescript /docs/technologies/typescript 301 +/technologies/typescript/introduction /docs/technologies/typescript/introduction 301 +/technologies/angular /docs/technologies/angular 301 +/technologies/angular/introduction /docs/technologies/angular/introduction 301 +/technologies/angular/migration /docs/technologies/angular/migration 301 +/technologies/angular/migration/angular /docs/technologies/angular/migration/angular 301 +/technologies/angular/migration/angular-multiple /docs/technologies/angular/migration/angular-multiple 301 +/technologies/angular/angular-rspack /docs/technologies/angular/angular-rspack 301 +/technologies/angular/angular-rspack/introduction /docs/technologies/angular/angular-rspack/introduction 301 +/technologies/angular/angular-rsbuild /docs/technologies/angular/angular-rsbuild 301 +/technologies/react /docs/technologies/react 301 +/technologies/react/introduction /docs/technologies/react/introduction 301 +/technologies/react/next /docs/technologies/react/next 301 +/technologies/react/next/introduction /docs/technologies/react/next/introduction 301 +/technologies/react/remix /docs/technologies/react/remix 301 +/technologies/react/remix/introduction /docs/technologies/react/remix/introduction 301 +/technologies/react/react-native /docs/technologies/react/react-native 301 +/technologies/react/react-native/introduction /docs/technologies/react/react-native/introduction 301 +/technologies/react/expo /docs/technologies/react/expo 301 +/technologies/react/expo/introduction /docs/technologies/react/expo/introduction 301 +/technologies/vue /docs/technologies/vue 301 +/technologies/vue/introduction /docs/technologies/vue/introduction 301 +/technologies/vue/nuxt /docs/technologies/vue/nuxt 301 +/technologies/vue/nuxt/introduction /docs/technologies/vue/nuxt/introduction 301 +/technologies/node /docs/technologies/node 301 +/technologies/node/introduction /docs/technologies/node/introduction 301 +/technologies/node/express /docs/technologies/node/express 301 +/technologies/node/express/introduction /docs/technologies/node/express/introduction 301 +/technologies/node/nest /docs/technologies/node/nest 301 +/technologies/node/nest/introduction /docs/technologies/node/nest/introduction 301 +/technologies/module-federation /docs/technologies/module-federation 301 +/technologies/module-federation/introduction /docs/technologies/module-federation/introduction 301 +/technologies/module-federation/concepts /docs/technologies/module-federation/concepts 301 +/technologies/module-federation/concepts/module-federation-and-nx /docs/technologies/module-federation/concepts/module-federation-and-nx 301 +/technologies/module-federation/concepts/nx-module-federation-technical-overview /docs/technologies/module-federation/concepts/nx-module-federation-technical-overview 301 +/technologies/module-federation/concepts/faster-builds-with-module-federation /docs/technologies/module-federation/concepts/faster-builds-with-module-federation 301 +/technologies/module-federation/concepts/micro-frontend-architecture /docs/technologies/module-federation/concepts/micro-frontend-architecture 301 +/technologies/module-federation/concepts/manage-library-versions-with-module-federation /docs/technologies/module-federation/concepts/manage-library-versions-with-module-federation 301 +/technologies/eslint /docs/technologies/eslint 301 +/technologies/eslint/introduction /docs/technologies/eslint/introduction 301 +/technologies/eslint/eslint-plugin /docs/technologies/eslint/eslint-plugin 301 +/technologies/build-tools /docs/technologies/build-tools 301 +/technologies/build-tools/docker/introduction /docs/technologies/build-tools/docker/introduction 301 +/technologies/build-tools/webpack /docs/technologies/build-tools/webpack 301 +/technologies/build-tools/webpack/introduction /docs/technologies/build-tools/webpack/introduction 301 +/technologies/build-tools/vite /docs/technologies/build-tools/vite 301 +/technologies/build-tools/vite/introduction /docs/technologies/build-tools/vite/introduction 301 +/technologies/build-tools/rollup /docs/technologies/build-tools/rollup 301 +/technologies/build-tools/rollup/introduction /docs/technologies/build-tools/rollup/introduction 301 +/technologies/build-tools/esbuild /docs/technologies/build-tools/esbuild 301 +/technologies/build-tools/esbuild/introduction /docs/technologies/build-tools/esbuild/introduction 301 +/technologies/build-tools/rspack /docs/technologies/build-tools/rspack 301 +/technologies/build-tools/rspack/introduction /docs/technologies/build-tools/rspack/introduction 301 +/technologies/build-tools/rsbuild /docs/technologies/build-tools/rsbuild 301 +/technologies/build-tools/rsbuild/introduction /docs/technologies/build-tools/rsbuild/introduction 301 +/technologies/test-tools /docs/technologies/test-tools 301 +/technologies/test-tools/cypress /docs/technologies/test-tools/cypress 301 +/technologies/test-tools/cypress/introduction /docs/technologies/test-tools/cypress/introduction 301 +/technologies/test-tools/jest /docs/technologies/test-tools/jest 301 +/technologies/test-tools/jest/introduction /docs/technologies/test-tools/jest/introduction 301 +/technologies/test-tools/playwright /docs/technologies/test-tools/playwright 301 +/technologies/test-tools/playwright/introduction /docs/technologies/test-tools/playwright/introduction 301 +/technologies/test-tools/playwright/recipes/merge-atomized-outputs /docs/technologies/test-tools/playwright/guides/merge-atomized-outputs 301 +/technologies/test-tools/storybook /docs/technologies/test-tools/storybook 301 +/technologies/test-tools/storybook/introduction /docs/technologies/test-tools/storybook/introduction 301 +/technologies/test-tools/detox /docs/technologies/test-tools/detox 301 +/technologies/test-tools/detox/introduction /docs/technologies/test-tools/detox/introduction 301 +/technologies/typescript/recipes/* /docs/technologies/typescript/guides/:splat 301 +/technologies/angular/recipes/* /docs/technologies/angular/guides/:splat 301 +/technologies/angular/angular-rspack/recipes /docs/technologies/angular/angular-rspack/guides/getting-started 301 +/technologies/angular/angular-rspack/recipes/* /docs/technologies/angular/angular-rspack/guides/:splat 301 +/technologies/angular/angular-rspack/api /docs/technologies/angular/angular-rspack/guides/getting-started 301 +/technologies/angular/angular-rspack/api/create-config /docs/technologies/angular/angular-rspack/create-config 301 +/technologies/angular/angular-rspack/api/create-server /docs/technologies/angular/angular-rspack/create-server 301 +/technologies/angular/angular-rsbuild/api /docs/technologies/angular/angular-rsbuild/create-config 301 +/technologies/angular/angular-rsbuild/api/create-config /docs/technologies/angular/angular-rsbuild/create-config 301 +/technologies/angular/angular-rsbuild/api/create-server /docs/technologies/angular/angular-rsbuild/create-server 301 +/technologies/react/recipes/* /docs/technologies/react/guides/:splat 301 +/technologies/react/next/recipes /docs/technologies/react/next/guides 301 +/technologies/react/next/recipes/next-config-setup /docs/technologies/react/next/guides/next-config-setup 301 +/technologies/react/next/api /docs/technologies/react/next 301 +/technologies/react/remix/recipes /docs/technologies/react/remix 301 +/technologies/react/remix/api /docs/technologies/react/remix 301 +/technologies/react/react-native/recipes /docs/technologies/react/react-native 301 +/technologies/react/react-native/api /docs/technologies/react/react-native 301 +/technologies/react/expo/recipes /docs/technologies/react/expo 301 +/technologies/react/expo/api /docs/technologies/react/expo 301 +/technologies/vue/nuxt/recipes /docs/technologies/vue/nuxt/guides 301 +/technologies/vue/nuxt/recipes/deploy-nuxt-to-vercel /docs/technologies/vue/nuxt/guides/deploy-nuxt-to-vercel 301 +/technologies/vue/nuxt/api /docs/technologies/vue/nuxt 301 +/technologies/node/recipes/* /docs/technologies/node/guides/:splat 301 +/technologies/node/express/api /docs/technologies/node/express 301 +/technologies/node/nest/api /docs/technologies/node/nest 301 +/technologies/java/introduction /docs/technologies/java/introduction 301 +/technologies/module-federation/recipes/nx-module-federation-plugin /docs/technologies/module-federation/guides/create-a-host 301 +/technologies/module-federation/recipes/* /docs/technologies/module-federation/guides/:splat 301 +/technologies/eslint/recipes/* /docs/technologies/eslint/guides/:splat 301 +/technologies/eslint/eslint-plugin/recipes /docs/technologies/eslint/eslint-plugin/guides 301 +/technologies/eslint/eslint-plugin/recipes/* /docs/technologies/eslint/eslint-plugin/guides/:splat 301 +/technologies/eslint/eslint-plugin/api /docs/technologies/eslint/eslint-plugin 301 +/technologies/build-tools/docker /docs/technologies/build-tools/docker/introduction 301 +/technologies/build-tools/webpack/recipes /docs/technologies/build-tools/webpack/guides 301 +/technologies/build-tools/webpack/recipes/* /docs/technologies/build-tools/webpack/guides/:splat 301 +/technologies/build-tools/webpack/api /docs/technologies/build-tools/webpack 301 +/technologies/build-tools/vite/recipes /docs/technologies/build-tools/vite/guides 301 +/technologies/build-tools/vite/recipes/configure-vite /docs/technologies/build-tools/vite/guides/configure-vite 301 +/technologies/build-tools/vite/api /docs/technologies/build-tools/vite/guides/configure-vite 301 +/technologies/build-tools/rollup/recipes /docs/technologies/build-tools/rollup/introduction 301 +/technologies/build-tools/rollup/api /docs/technologies/build-tools/rollup/introduction 301 +/technologies/build-tools/esbuild/recipes /docs/technologies/build-tools/esbuild/introduction 301 +/technologies/build-tools/esbuild/api /docs/technologies/build-tools/esbuild/introduction 301 +/technologies/build-tools/rspack/recipes /docs/technologies/build-tools/rspack/introduction 301 +/technologies/build-tools/rspack/api /docs/technologies/build-tools/rspack/introduction 301 +/technologies/build-tools/rsbuild/recipes /docs/technologies/build-tools/rsbuild/introduction 301 +/technologies/build-tools/rsbuild/api /docs/technologies/build-tools/rsbuild/introduction 301 +/technologies/test-tools/cypress/recipes /docs/technologies/test-tools/cypress/guides/cypress-component-testing 301 +/technologies/test-tools/cypress/recipes/* /docs/technologies/test-tools/cypress/guides/:splat 301 +/technologies/test-tools/cypress/api /docs/technologies/test-tools/cypress 301 +/technologies/test-tools/jest/recipes /docs/technologies/test-tools/jest/introduction 301 +/technologies/test-tools/jest/api /docs/technologies/test-tools/jest 301 +/technologies/test-tools/playwright/recipes /docs/technologies/test-tools/playwright/introduction 301 +/technologies/test-tools/playwright/api /docs/technologies/test-tools/playwright 301 +/technologies/test-tools/storybook/recipes /docs/technologies/test-tools/storybook/guides 301 +/technologies/test-tools/storybook/recipes/storybook-9-setup /docs/technologies/test-tools/storybook/guides/upgrading-storybook 301 +/technologies/test-tools/storybook/recipes/* /docs/technologies/test-tools/storybook/guides/:splat 301 +/technologies/test-tools/storybook/api /docs/technologies/test-tools/storybook/guides/angular-configuring-styles 301 +/technologies/test-tools/detox/recipes /docs/technologies/test-tools/detox/introduction 301 +/technologies/test-tools/detox/api /docs/technologies/test-tools/detox 301 +/technologies/test-tools/cypress/api/executors /docs/technologies/test-tools/cypress/executors 301 +/technologies/test-tools/cypress/api/generators /docs/technologies/test-tools/cypress/generators 301 +/technologies/test-tools/cypress/api/migrations /docs/technologies/test-tools/cypress/migrations 301 +/technologies/test-tools/detox/api/executors /docs/technologies/test-tools/detox/executors 301 +/technologies/test-tools/detox/api/generators /docs/technologies/test-tools/detox/generators 301 +/technologies/test-tools/detox/api/migrations /docs/technologies/test-tools/detox/migrations 301 +/technologies/build-tools/esbuild/api/executors /docs/technologies/build-tools/esbuild/executors 301 +/technologies/build-tools/esbuild/api/executors/esbuild /docs/technologies/build-tools/esbuild/executors 301 +/technologies/build-tools/esbuild/api/generators /docs/technologies/build-tools/esbuild/generators 301 +/technologies/build-tools/esbuild/api/migrations /docs/technologies/build-tools/esbuild 301 +/technologies/eslint/eslint-plugin/api/executors /docs/technologies/eslint/eslint-plugin 301 +/technologies/eslint/eslint-plugin/api/generators /docs/technologies/eslint/eslint-plugin 301 +/technologies/eslint/eslint-plugin/api/migrations /docs/technologies/eslint/eslint-plugin/migrations 301 +/technologies/react/expo/api/executors /docs/technologies/react/expo/executors 301 +/technologies/react/expo/api/generators /docs/technologies/react/expo/generators 301 +/technologies/react/expo/api/migrations /docs/technologies/react/expo/migrations 301 +/technologies/node/express/api/executors /docs/technologies/node/express 301 +/technologies/node/express/api/generators /docs/technologies/node/express/generators 301 +/technologies/node/express/api/migrations /docs/technologies/node/express 301 +/technologies/java/api/executors/gradle /docs/technologies/java/executors 301 +/technologies/test-tools/jest/api/executors /docs/technologies/test-tools/jest/executors 301 +/technologies/test-tools/jest/api/generators /docs/technologies/test-tools/jest/generators 301 +/technologies/test-tools/jest/api/migrations /docs/technologies/test-tools/jest/migrations 301 +/technologies/node/nest/api/executors /docs/technologies/node/nest 301 +/technologies/node/nest/api/generators /docs/technologies/node/nest/generators 301 +/technologies/node/nest/api/migrations /docs/technologies/node/nest/migrations 301 +/technologies/react/next/api/executors /docs/technologies/react/next/executors 301 +/technologies/react/next/api/generators /docs/technologies/react/next/generators 301 +/technologies/react/next/api/migrations /docs/technologies/react/next/migrations 301 +/technologies/vue/nuxt/api/executors /docs/technologies/vue/nuxt 301 +/technologies/vue/nuxt/api/generators /docs/technologies/vue/nuxt/generators 301 +/technologies/vue/nuxt/api/migrations /docs/technologies/vue/nuxt/migrations 301 +/technologies/test-tools/playwright/api/executors /docs/technologies/test-tools/playwright/executors 301 +/technologies/test-tools/playwright/api/generators /docs/technologies/test-tools/playwright/generators 301 +/technologies/test-tools/playwright/api/migrations /docs/technologies/test-tools/playwright/migrations 301 +/technologies/react/react-native/api/executors /docs/technologies/react/react-native/executors 301 +/technologies/react/react-native/api/generators /docs/technologies/react/react-native/generators 301 +/technologies/react/react-native/api/migrations /docs/technologies/react/react-native/migrations 301 +/technologies/react/remix/api/executors /docs/technologies/react/remix/executors 301 +/technologies/react/remix/api/generators /docs/technologies/react/remix/generators 301 +/technologies/react/remix/api/migrations /docs/technologies/react/remix/migrations 301 +/technologies/build-tools/rollup/api/executors /docs/technologies/build-tools/rollup/executors 301 +/technologies/build-tools/rollup/api/generators /docs/technologies/build-tools/rollup/generators 301 +/technologies/build-tools/rollup/api/migrations /docs/technologies/build-tools/rollup/migrations 301 +/technologies/build-tools/rsbuild/api/executors /docs/technologies/build-tools/rsbuild 301 +/technologies/build-tools/rsbuild/api/generators /docs/technologies/build-tools/rsbuild/generators 301 +/technologies/build-tools/rsbuild/api/migrations /docs/technologies/build-tools/rsbuild 301 +/technologies/build-tools/rspack/api/executors /docs/technologies/build-tools/rspack/executors 301 +/technologies/build-tools/rspack/api/generators /docs/technologies/build-tools/rspack/generators 301 +/technologies/build-tools/rspack/api/migrations /docs/technologies/build-tools/rspack/migrations 301 +/technologies/test-tools/storybook/api/executors /docs/technologies/test-tools/storybook/executors 301 +/technologies/test-tools/storybook/api/generators /docs/technologies/test-tools/storybook/generators 301 +/technologies/test-tools/storybook/api/migrations /docs/technologies/test-tools/storybook/migrations 301 +/technologies/build-tools/vite/api/executors /docs/technologies/build-tools/vite/executors 301 +/technologies/build-tools/vite/api/generators /docs/technologies/build-tools/vite/generators 301 +/technologies/build-tools/vite/api/migrations /docs/technologies/build-tools/vite/migrations 301 +/technologies/build-tools/webpack/api/executors /docs/technologies/build-tools/webpack/executors 301 +/technologies/build-tools/webpack/api/generators /docs/technologies/build-tools/webpack/generators 301 +/technologies/build-tools/webpack/api/migrations /docs/technologies/build-tools/webpack/migrations 301 +/technologies/typescript/recipes /docs/technologies/typescript/guides/compile-multiple-formats 301 +/technologies/typescript/api /docs/technologies/typescript/guides/compile-multiple-formats 301 +/technologies/angular/recipes /docs/technologies/angular/guides/angular-nx-version-matrix 301 +/technologies/angular/api /docs/technologies/angular/guides/angular-nx-version-matrix 301 +/technologies/react/recipes /docs/technologies/react/guides/adding-assets-react 301 +/technologies/react/api /docs/technologies/react/guides/adding-assets-react 301 +/technologies/vue/api /docs/technologies/vue 301 +/technologies/node/recipes /docs/technologies/node/guides/application-proxies 301 +/technologies/node/api /docs/technologies/node/guides/application-proxies 301 +/technologies/java /docs/technologies/angular/guides/angular-nx-version-matrix 301 +/technologies/java/api /docs/technologies/angular/guides/angular-nx-version-matrix 301 +/technologies/module-federation/recipes /docs/technologies/module-federation/guides/create-a-host 301 +/technologies/module-federation/api /docs/technologies/module-federation/guides/create-a-host 301 +/technologies/eslint/recipes /docs/technologies/eslint/guides/eslint 301 +/technologies/eslint/api /docs/technologies/eslint/guides/eslint 301 +/technologies/angular/api/executors /docs/technologies/angular/executors 301 +/technologies/angular/api/generators /docs/technologies/angular/generators 301 +/technologies/angular/api/migrations /docs/technologies/angular/migrations 301 +/technologies/eslint/api/executors /docs/technologies/eslint/executors 301 +/technologies/eslint/api/generators /docs/technologies/eslint/generators 301 +/technologies/eslint/api/migrations /docs/technologies/eslint/migrations 301 +/technologies/java/api/executors /docs/technologies/java/executors 301 +/technologies/java/api/generators /docs/technologies/java/generators 301 +/technologies/java/api/migrations /docs/technologies/java/migrations 301 +/technologies/typescript/api/executors /docs/technologies/typescript/executors 301 +/technologies/typescript/api/generators /docs/technologies/typescript/generators 301 +/technologies/typescript/api/migrations /docs/technologies/typescript/migrations 301 +/technologies/module-federation/api/executors /docs/technologies/module-federation 301 +/technologies/module-federation/api/generators /docs/technologies/module-federation 301 +/technologies/module-federation/api/migrations /docs/technologies/module-federation/migrations 301 +/technologies/node/api/executors /docs/technologies/node 301 +/technologies/node/api/generators /docs/technologies/node/generators 301 +/technologies/node/api/migrations /docs/technologies/node/migrations 301 +/technologies/react/api/executors /docs/technologies/react/executors 301 +/technologies/react/api/generators /docs/technologies/react/generators 301 +/technologies/react/api/migrations /docs/technologies/react/migrations 301 +/technologies/vue/api/executors /docs/technologies/vue 301 +/technologies/vue/api/generators /docs/technologies/vue/generators 301 +/technologies/vue/api/migrations /docs/technologies/vue/migrations 301 +/troubleshooting/convert-to-inferred /docs/troubleshooting/troubleshoot-convert-to-inferred 301 +/troubleshooting /docs/troubleshooting 301 +/troubleshooting/* /docs/troubleshooting/:splat 301 +/ci /docs/getting-started/nx-cloud 301 +/ci/recipes /docs/guides/nx-cloud 301 +/ci/recipes/improving-ttg /docs/guides/nx-cloud/optimize-your-ttg 301 +/ci/recipes/set-up /docs/guides/nx-cloud/setup-ci 301 +/ci/recipes/set-up/* /docs/guides/nx-cloud/setup-ci 301 +/ci/recipes/security /docs/guides/nx-cloud 301 +/ci/recipes/dte /docs/guides/nx-cloud/manual-dte 301 +/ci/recipes/dte/* /docs/guides/nx-cloud/manual-dte 301 +/ci/recipes/other /docs/guides/nx-cloud/setup-ci 301 +/see-also /docs/getting-started/intro 301 +/see-also/sitemap /docs/getting-started/intro 301 +/showcase /docs/getting-started/intro 301 +/showcase/example-repos/* /docs/getting-started/intro 301 +/reference/workspace /docs/reference/workspace 301 +/reference/workspace/generators /docs/reference/workspace/generators 301 +/reference/workspace/migrations /docs/reference/workspace/migrations 301 +/reference/nx /docs/reference/nx 301 +/reference/nx/executors /docs/reference/nx/executors 301 +/reference/nx/generators /docs/reference/nx/generators 301 +/reference/nx/migrations /docs/reference/nx/migrations 301 +/reference/plugin /docs/reference/plugin 301 +/reference/plugin/generators /docs/reference/plugin/generators 301 +/reference/web /docs/reference/web 301 +/reference/web/executors /docs/reference/web/executors 301 +/reference/web/generators /docs/reference/web/generators 301 +/ci/intro /docs/getting-started/nx-cloud 301 +/features/self-healing-ci /docs/features/ci-features/self-healing-ci 301 + +# --- removeEvolvingNx --- +/blog/evolving-nx /blog/introducing-nx-powerpack 301 + +# --- pageCleanUp --- +/advent-of-code / 301 +/launch-nx / 301 +/ai / 301 diff --git a/nx-dev/nx-dev/next.config.js b/nx-dev/nx-dev/next.config.js index 557df29ad1e..48addc995f6 100644 --- a/nx-dev/nx-dev/next.config.js +++ b/nx-dev/nx-dev/next.config.js @@ -1,6 +1,5 @@ // nx-ignore-next-line const { withNx } = require('@nx/next/plugins/with-nx'); -const redirectRules = require('./redirect-rules'); // For deploy previews, always point to the matching astro-docs preview // (overrides any site-level env var that would otherwise point to production). @@ -185,22 +184,6 @@ module.exports = withNx({ }, ]; }, - async redirects() { - const rules = []; - - // Apply all the redirects from the redirect-rules.js file - for (const section of Object.keys(redirectRules)) { - for (const source of Object.keys(redirectRules[section])) { - rules.push({ - source: source, - destination: redirectRules[section][source], - permanent: true, - }); - } - } - - return rules; - }, webpack: (config, { dev }) => { if (!dev) { // Disable source maps for smaller memory footprint diff --git a/nx-dev/nx-dev/project.json b/nx-dev/nx-dev/project.json index d315d990620..54adf110a8b 100644 --- a/nx-dev/nx-dev/project.json +++ b/nx-dev/nx-dev/project.json @@ -152,7 +152,7 @@ "netlify": { "commands": [ { - "command": "nx run nx-dev:build-base:netlify && nx run nx-dev:sitemap", + "command": "nx run nx-dev:build-base:netlify && cp nx-dev/nx-dev/_redirects nx-dev/nx-dev/.next/_redirects && nx run nx-dev:sitemap", "description": "NextJs build for Netlify" } ] diff --git a/nx-dev/nx-dev/scripts/generate-netlify-redirects.mjs b/nx-dev/nx-dev/scripts/generate-netlify-redirects.mjs new file mode 100644 index 00000000000..3b3772fa651 --- /dev/null +++ b/nx-dev/nx-dev/scripts/generate-netlify-redirects.mjs @@ -0,0 +1,101 @@ +#!/usr/bin/env node +/** + * One-time script to convert Next.js redirect rules to Netlify _redirects format. + * + * Usage: node nx-dev/nx-dev/scripts/generate-netlify-redirects.mjs + * + * Writes to nx-dev/nx-dev/_redirects + */ +import { createRequire } from 'module'; +import { writeFileSync } from 'fs'; +import { join, dirname } from 'path'; +import { fileURLToPath } from 'url'; + +const require = createRequire(import.meta.url); +const __dirname = dirname(fileURLToPath(import.meta.url)); + +const redirectRules = require('../redirect-rules.js'); + +/** + * Expand regex-style groups in Next.js redirect sources. + * e.g. "/(l|latest)/(a|angular)/foo" => ["/l/a/foo", "/l/angular/foo", "/latest/a/foo", "/latest/angular/foo"] + */ +function expandRegexGroups(pattern) { + const groupRegex = /\(([^)]+)\)/; + const match = pattern.match(groupRegex); + if (!match) return [pattern]; + + const alternatives = match[1].split('|'); + const results = []; + for (const alt of alternatives) { + const expanded = pattern.replace(match[0], alt); + // Recursively expand remaining groups + results.push(...expandRegexGroups(expanded)); + } + return results; +} + +/** + * Convert a Next.js redirect source/destination pair to Netlify _redirects format. + * Returns an array of lines (multiple if regex groups need expansion). + */ +function convertRule(source, destination) { + const lines = []; + + // Expand regex groups in source + const expandedSources = expandRegexGroups(source); + + for (let src of expandedSources) { + let dest = destination; + + // Trim trailing whitespace from source (pageCleanUp has trailing spaces) + src = src.trim(); + dest = dest.trim(); + + // Convert Next.js :path* wildcard to Netlify * / :splat + src = src.replace(/:path\*/g, '*'); + dest = dest.replace(/:path\*/g, ':splat'); + + lines.push(`${src} ${dest} 301`); + } + + return lines; +} + +// Generate _redirects content +const outputLines = [ + '# Netlify _redirects file', + '# Generated from redirect-rules.js and redirect-rules-docs-to-astro.js', + '# All rules are permanent (301) redirects.', + '#', + '# Netlify processes these top-to-bottom, first match wins.', + '# Specific rules MUST come before wildcard rules.', + '', +]; + +for (const section of Object.keys(redirectRules)) { + const rules = redirectRules[section]; + const entries = Object.entries(rules); + if (entries.length === 0) continue; + + outputLines.push(`# --- ${section} ---`); + + for (const [source, destination] of entries) { + const converted = convertRule(source, destination); + for (const line of converted) { + outputLines.push(line); + } + } + + outputLines.push(''); +} + +const outputPath = join(__dirname, '..', '_redirects'); +const content = outputLines.join('\n'); +writeFileSync(outputPath, content, 'utf-8'); + +// Count rules (non-empty, non-comment lines) +const ruleCount = content + .split('\n') + .filter((l) => l.trim() && !l.startsWith('#')).length; +console.log(`Wrote ${ruleCount} redirect rules to ${outputPath}`);