From 121d9973a8405ec0a8bde26617cb4bc39a484116 Mon Sep 17 00:00:00 2001 From: Jason Jean Date: Wed, 5 Mar 2025 18:32:44 -0500 Subject: [PATCH] fix(core): run init generators from extended collections during nx add (#30280) ## Current Behavior When the `init` generator is in an extended collection, `nx add` will not run it. ## Expected Behavior When the `init` generator is in an extended collection, `nx add` will run it. ## Related Issue(s) Fixes # --- .../command-line/init/configure-plugins.ts | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/packages/nx/src/command-line/init/configure-plugins.ts b/packages/nx/src/command-line/init/configure-plugins.ts index 9cea32562d..bcba0cc9bf 100644 --- a/packages/nx/src/command-line/init/configure-plugins.ts +++ b/packages/nx/src/command-line/init/configure-plugins.ts @@ -10,13 +10,13 @@ import { output } from '../../utils/output'; import { GeneratorsJsonEntry } from '../../config/misc-interfaces'; import { workspaceRoot } from '../../utils/workspace-root'; import { addDepsToPackageJson, runInstall } from './implementation/utils'; -import { getPluginCapabilities } from '../../utils/plugins'; import { isAngularPluginInstalled } from '../../adapter/angular-json'; import { isAggregateCreateNodesError, isProjectConfigurationsError, isProjectsWithNoNameError, } from '../../project-graph/error-types'; +import { getGeneratorInformation } from '../generate/generator-utils'; export function runPackageManagerInstallPlugins( repoRoot: string, @@ -46,29 +46,25 @@ export async function installPlugin( verbose: boolean = false, pmc: PackageManagerCommands = getPackageManagerCommand() ): Promise { - const capabilities = await getPluginCapabilities(repoRoot, plugin, {}); - const generators = capabilities?.generators; - if (!generators) { - throw new Error(`No generators found in ${plugin}.`); - } - - const initGenerator = findInitGenerator(generators); - if (!initGenerator) { + try { + getGeneratorInformation(plugin, 'init', workspaceRoot, {}); + execSync( + `${pmc.exec} nx g ${plugin}:init --keepExistingVersions ${ + updatePackageScripts ? '--updatePackageScripts' : '' + } ${verbose ? '--verbose' : ''}`, + { + stdio: [0, 1, 2], + cwd: repoRoot, + windowsHide: false, + } + ); + } catch { + // init generator does not exist, so this function should noop output.log({ title: `No "init" generator found in ${plugin}. Skipping initialization.`, }); return; } - execSync( - `${pmc.exec} nx g ${plugin}:init --keepExistingVersions ${ - updatePackageScripts ? '--updatePackageScripts' : '' - } ${verbose ? '--verbose' : ''}`, - { - stdio: [0, 1, 2], - cwd: repoRoot, - windowsHide: false, - } - ); } /**