From aec53a040679131a648e89a803a93d3d81efe0e4 Mon Sep 17 00:00:00 2001 From: Jack Hsu Date: Tue, 29 Oct 2024 11:04:44 -0400 Subject: [PATCH] feat(misc): remove handling of @nrwl scope (#28589) This PR removes logic where we handle both `@nx/` and `@nrwl/` scope. The latter scope has stopped being published in v20, and are no longer relevant. - Cleans up e2e - Removes references to `@nrwl/` scope in our generators and executors - Removes `@nrwl/` from `nx/package.json` `packageGroup` - Cleans up documentation quality script --- e2e/node/src/node.test.ts | 2 +- e2e/react/src/cypress-component-tests.test.ts | 4 +-- .../src/generators/init/init-migration.ts | 13 +++------- .../generators/lint-project/lint-project.ts | 2 +- .../utils/flat-config/ast-utils.spec.ts | 4 +-- packages/js/src/executors/node/node.impl.ts | 5 +--- .../convert-to-swc/convert-to-swc.ts | 6 +---- packages/nx/package.json | 26 ------------------- packages/nx/src/adapter/angular-json.ts | 9 ++----- packages/nx/src/plugins/js/utils/config.ts | 12 ++------- packages/nx/src/utils/print-help.ts | 14 +++------- .../plugin-quality-indicators.ts | 20 +++++--------- 12 files changed, 23 insertions(+), 94 deletions(-) diff --git a/e2e/node/src/node.test.ts b/e2e/node/src/node.test.ts index 8c1ef40c18..e5955ac93e 100644 --- a/e2e/node/src/node.test.ts +++ b/e2e/node/src/node.test.ts @@ -359,7 +359,7 @@ module.exports = { const esmapp = uniq('esmapp'); runCLI( - `generate @nrwl/node:app ${esmapp} --linter=eslint --framework=none --bundler=webpack` + `generate @nx/node:app ${esmapp} --linter=eslint --framework=none --bundler=webpack` ); updateJson(`apps/${esmapp}/tsconfig.app.json`, (config) => { config.module = 'esnext'; diff --git a/e2e/react/src/cypress-component-tests.test.ts b/e2e/react/src/cypress-component-tests.test.ts index 7fd6de4b58..b3135ca332 100644 --- a/e2e/react/src/cypress-component-tests.test.ts +++ b/e2e/react/src/cypress-component-tests.test.ts @@ -298,7 +298,7 @@ ${content}`; it.skip('should CT vite projects importing other projects', () => { const viteLibName = uniq('vite-lib'); runCLI( - `generate @nrwl/react:lib ${viteLibName} --bundler=vite --no-interactive` + `generate @nx/react:lib ${viteLibName} --bundler=vite --no-interactive` ); updateFile(`libs/${viteLibName}/src/lib/${viteLibName}.tsx`, () => { @@ -316,7 +316,7 @@ export default MyComponent;`; }); runCLI( - `generate @nrwl/react:cypress-component-configuration --project=${viteLibName} --generate-tests --bundler=vite --build-target=${appName}:build` + `generate @nx/react:cypress-component-configuration --project=${viteLibName} --generate-tests --bundler=vite --build-target=${appName}:build` ); if (runE2ETests()) { expect(runCLI(`component-test ${viteLibName}`)).toContain( diff --git a/packages/eslint/src/generators/init/init-migration.ts b/packages/eslint/src/generators/init/init-migration.ts index ea199ff126..d304973c81 100644 --- a/packages/eslint/src/generators/init/init-migration.ts +++ b/packages/eslint/src/generators/init/init-migration.ts @@ -123,8 +123,7 @@ export function findLintTarget( return Object.values(project.targets ?? {}).find( (target) => target.executor === '@nx/eslint:lint' || - target.executor === '@nx/linter:eslint' || - target.executor === '@nrwl/linter:eslint' + target.executor === '@nx/linter:eslint' ); } @@ -150,8 +149,6 @@ function migrateEslintFile(projectEslintPath: string, tree: Tree) { config = removeCompatExtends(config, [ 'plugin:@nx/typescript', 'plugin:@nx/javascript', - 'plugin:@nrwl/typescript', - 'plugin:@nrwl/javascript', ]); config = removePredefinedConfigs(config, '@nx/eslint-plugin', 'nx', [ 'flat/base', @@ -165,9 +162,7 @@ function migrateEslintFile(projectEslintPath: string, tree: Tree) { delete json.root; // remove nrwl/nx plugins if (json.plugins) { - json.plugins = json.plugins.filter( - (p) => p !== '@nx' && p !== '@nrwl/nx' - ); + json.plugins = json.plugins.filter((p) => p !== '@nx'); if (json.plugins.length === 0) { delete json.plugins; } @@ -193,9 +188,7 @@ function migrateEslintFile(projectEslintPath: string, tree: Tree) { override.extends = override.extends.filter( (ext) => ext !== 'plugin:@nx/typescript' && - ext !== 'plugin:@nrwl/nx/typescript' && - ext !== 'plugin:@nx/javascript' && - ext !== 'plugin:@nrwl/nx/javascript' + ext !== 'plugin:@nx/javascript' ); if (override.extends.length === 0) { delete override.extends; diff --git a/packages/eslint/src/generators/lint-project/lint-project.ts b/packages/eslint/src/generators/lint-project/lint-project.ts index 6ff40663bb..31492de802 100644 --- a/packages/eslint/src/generators/lint-project/lint-project.ts +++ b/packages/eslint/src/generators/lint-project/lint-project.ts @@ -329,7 +329,7 @@ function isMigrationToMonorepoNeeded(tree: Tree, graph: ProjectGraph): boolean { for (const targetConfig of Object.values(rootProject.data.targets ?? {})) { if ( - ['@nx/eslint:lint', '@nrwl/linter:eslint', '@nx/linter:eslint'].includes( + ['@nx/eslint:lint', '@nx/linter:eslint'].includes( targetConfig.executor ) || (targetConfig.executor === 'nx:run-commands' && diff --git a/packages/eslint/src/generators/utils/flat-config/ast-utils.spec.ts b/packages/eslint/src/generators/utils/flat-config/ast-utils.spec.ts index 6e8947462d..cac8fe56a7 100644 --- a/packages/eslint/src/generators/utils/flat-config/ast-utils.spec.ts +++ b/packages/eslint/src/generators/utils/flat-config/ast-utils.spec.ts @@ -959,7 +959,7 @@ module.exports = [ rules: {} })), { ignores: ["src/ignore/to/keep.ts"] }, - ...compat.config({ extends: ["plugin:@nrwl/javascript"] }).map(config => ({ + ...compat.config({ extends: ["plugin:@nx/javascript"] }).map(config => ({ files: ['*.js', '*.jsx'], ...config, rules: {} @@ -969,8 +969,6 @@ module.exports = [ const result = removeCompatExtends(content, [ 'plugin:@nx/typescript', 'plugin:@nx/javascript', - 'plugin:@nrwl/typescript', - 'plugin:@nrwl/javascript', ]); expect(result).toMatchInlineSnapshot(` "const { FlatCompat } = require("@eslint/eslintrc"); diff --git a/packages/js/src/executors/node/node.impl.ts b/packages/js/src/executors/node/node.impl.ts index 78b1e28459..40a69ef207 100644 --- a/packages/js/src/executors/node/node.impl.ts +++ b/packages/js/src/executors/node/node.impl.ts @@ -59,10 +59,7 @@ export async function* nodeExecutor( const buildTargetExecutor = project.data.targets[buildTarget.target]?.executor; - if ( - buildTargetExecutor === 'nx:run-commands' || - buildTargetExecutor === '@nrwl/workspace:run-commands' - ) { + if (buildTargetExecutor === 'nx:run-commands') { // Run commands does not emit build event, so we have to switch to run entire build through Nx CLI. options.runBuildTargetDependencies = true; } diff --git a/packages/js/src/generators/convert-to-swc/convert-to-swc.ts b/packages/js/src/generators/convert-to-swc/convert-to-swc.ts index e4fca79575..624db7aa2a 100644 --- a/packages/js/src/generators/convert-to-swc/convert-to-swc.ts +++ b/packages/js/src/generators/convert-to-swc/convert-to-swc.ts @@ -51,11 +51,7 @@ function updateProjectBuildTargets( let updated = false; for (const target of projectTargets) { const targetConfiguration = projectConfiguration.targets?.[target]; - if ( - !targetConfiguration || - (targetConfiguration.executor !== '@nx/js:tsc' && - targetConfiguration.executor !== '@nrwl/js:tsc') - ) + if (!targetConfiguration || targetConfiguration.executor !== '@nx/js:tsc') continue; targetConfiguration.executor = '@nx/js:swc'; updated = true; diff --git a/packages/nx/package.json b/packages/nx/package.json index 7b01ca59a7..a58142039c 100644 --- a/packages/nx/package.json +++ b/packages/nx/package.json @@ -98,61 +98,35 @@ "migrations": "./migrations.json", "packageGroup": [ "@nx/js", - "@nrwl/js", "@nx/jest", - "@nrwl/jest", "@nx/linter", "@nx/eslint", - "@nrwl/linter", "@nx/workspace", - "@nrwl/workspace", "@nx/angular", - "@nrwl/angular", "@nx/cypress", - "@nrwl/cypress", "@nx/detox", - "@nrwl/detox", "@nx/devkit", - "@nrwl/devkit", "@nx/esbuild", - "@nrwl/esbuild", "@nx/eslint-plugin", - "@nrwl/eslint-plugin-nx", "@nx/expo", - "@nrwl/expo", "@nx/express", - "@nrwl/express", "@nx/gradle", "@nx/nest", - "@nrwl/nest", "@nx/next", - "@nrwl/next", "@nx/node", - "@nrwl/node", "@nx/nuxt", "@nx/playwright", "@nx/plugin", - "@nrwl/nx-plugin", "@nx/react", - "@nrwl/react", "@nx/react-native", - "@nrwl/react-native", "@nx/rollup", - "@nrwl/rollup", "@nx/remix", - "@nrwl/remix", "@nx/rspack", - "@nrwl/rspack", "@nx/storybook", - "@nrwl/storybook", - "@nrwl/tao", "@nx/vite", - "@nrwl/vite", "@nx/vue", "@nx/web", - "@nrwl/web", "@nx/webpack", - "@nrwl/webpack", { "package": "nx-cloud", "version": "latest" diff --git a/packages/nx/src/adapter/angular-json.ts b/packages/nx/src/adapter/angular-json.ts index 585cd66c1e..eab874e82c 100644 --- a/packages/nx/src/adapter/angular-json.ts +++ b/packages/nx/src/adapter/angular-json.ts @@ -27,7 +27,7 @@ export function shouldMergeAngularProjects( // Include projects from angular.json if explicitly required. // e.g. when invoked from `packages/devkit/src/utils/convert-nx-executor.ts` (includeProjectsFromAngularJson || - // Or if a workspace has `@nrwl/angular`/`@nx/angular` installed then projects from `angular.json` to be considered by Nx. + // Or if a workspace has `@nx/angular` installed then projects from `angular.json` to be considered by Nx. isAngularPluginInstalled()) ) { return true; @@ -42,12 +42,7 @@ export function isAngularPluginInstalled() { require.resolve('@nx/angular'); return true; } catch { - try { - require.resolve('@nrwl/angular'); - return true; - } catch { - return false; - } + return false; } } diff --git a/packages/nx/src/plugins/js/utils/config.ts b/packages/nx/src/plugins/js/utils/config.ts index 4f681aa6e7..b91eb4adac 100644 --- a/packages/nx/src/plugins/js/utils/config.ts +++ b/packages/nx/src/plugins/js/utils/config.ts @@ -12,8 +12,7 @@ import { existsSync } from 'fs'; export function jsPluginConfig( nxJson: NxJsonConfiguration ): Required { - const nxJsonConfig: NrwlJsPluginConfig = - nxJson?.pluginsConfig?.['@nx/js'] ?? nxJson?.pluginsConfig?.['@nrwl/js']; + const nxJsonConfig: NrwlJsPluginConfig = nxJson?.pluginsConfig?.['@nx/js']; // using lerna _before_ installing deps is causing an issue when parsing lockfile. // See: https://github.com/lerna/lerna/issues/3807 @@ -58,14 +57,7 @@ export function jsPluginConfig( packageJsonDeps['@nx/next'] || packageJsonDeps['@nx/react'] || packageJsonDeps['@nx/angular'] || - packageJsonDeps['@nx/web'] || - packageJsonDeps['@nrwl/workspace'] || - packageJsonDeps['@nrwl/js'] || - packageJsonDeps['@nrwl/node'] || - packageJsonDeps['@nrwl/next'] || - packageJsonDeps['@nrwl/react'] || - packageJsonDeps['@nrwl/angular'] || - packageJsonDeps['@nrwl/web'] + packageJsonDeps['@nx/web'] ) { return { analyzePackageJson: true, diff --git a/packages/nx/src/utils/print-help.ts b/packages/nx/src/utils/print-help.ts index bff0c05142..45b6a95446 100644 --- a/packages/nx/src/utils/print-help.ts +++ b/packages/nx/src/utils/print-help.ts @@ -173,9 +173,7 @@ function generateExecutorOverviewOutput({ { text: `${pluginName}:${name}` + - (pluginName.startsWith('@nrwl/') - ? chalk.dim(` (v${nxVersion})`) - : ''), + (pluginName.startsWith('@nx/') ? chalk.dim(` (v${nxVersion})`) : ''), padding: [1, 0, 0, 0], }, ] @@ -335,18 +333,12 @@ function generateLinkOutput({ type: 'generators' | 'executors'; }): string { const nxPackagePrefix = '@nx/'; - const nrwlPackagePrefix = '@nrwl/'; - if ( - !pluginName.startsWith(nxPackagePrefix) && - !pluginName.startsWith(nrwlPackagePrefix) - ) { + if (!pluginName.startsWith(nxPackagePrefix)) { return ''; } const link = `https://nx.dev/nx-api/${pluginName.substring( - pluginName.startsWith(nxPackagePrefix) - ? nxPackagePrefix.length - : nrwlPackagePrefix.length + nxPackagePrefix.length )}/${type}/${name}`; return `\n\n${chalk.dim( diff --git a/scripts/documentation/plugin-quality-indicators.ts b/scripts/documentation/plugin-quality-indicators.ts index 0a6bbfa4d1..ea0863b09d 100644 --- a/scripts/documentation/plugin-quality-indicators.ts +++ b/scripts/documentation/plugin-quality-indicators.ts @@ -201,25 +201,20 @@ async function getGithubStars(repos: { owner: string; repo: string }[]) { async function getNxVersion(data: any) { const latest = data['dist-tags'].latest; - const nxPackages = [ - '@nx/devkit', - '@nrwl/devkit', - '@nx/workspace', - '@nrwl/workspace', - ]; + const nxPackages = ['@nx/devkit', '@nx/workspace']; let devkitVersion = ''; for (let i = 0; i < nxPackages.length && !devkitVersion; i++) { const packageName = nxPackages[i]; if (data.versions[latest]?.dependencies) { devkitVersion = data.versions[latest]?.dependencies[packageName]; if (devkitVersion) { - return await findNxRange(packageName, devkitVersion); + return await findNxRange(devkitVersion); } } if (!devkitVersion && data.versions[latest]?.peerDependencies) { devkitVersion = data.versions[latest]?.peerDependencies[packageName]; if (devkitVersion) { - return await findNxRange(packageName, devkitVersion); + return await findNxRange(devkitVersion); } } } @@ -227,20 +222,17 @@ async function getNxVersion(data: any) { return devkitVersion; } -async function findNxRange(packageName: string, devkitVersion: string) { +async function findNxRange(devkitVersion: string) { devkitVersion = devkitVersion .replace('^', '') .replace('>=', '') .replace('>', ''); - const lookupPackage = packageName.includes('@nx') - ? '@nx/devkit' - : '@nrwl/devkit'; const { data: devkitData } = await axios.get( - `https://registry.npmjs.org/${lookupPackage}` + `https://registry.npmjs.org/@nx/devkit` ); if (!devkitData.versions[devkitVersion]?.peerDependencies) { const dependencies = devkitData.versions[devkitVersion]?.dependencies; - return dependencies && (dependencies?.nx || dependencies['@nrwl/tao']); + return dependencies?.nx; } return devkitData.versions[devkitVersion]?.peerDependencies.nx; }