diff --git a/packages/react/src/generators/component/component.spec.ts b/packages/react/src/generators/component/component.spec.ts index 2f873fe48d..36293452af 100644 --- a/packages/react/src/generators/component/component.spec.ts +++ b/packages/react/src/generators/component/component.spec.ts @@ -1,5 +1,11 @@ import { installedCypressVersion } from '@nx/cypress/src/utils/cypress-version'; -import { logger, readJson, Tree } from '@nx/devkit'; +import { + logger, + readJson, + readProjectConfiguration, + Tree, + updateProjectConfiguration, +} from '@nx/devkit'; import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; import { createApp, createLib } from '../../utils/testing-generators'; import { componentGenerator } from './component'; @@ -140,6 +146,22 @@ describe('component', () => { expect(indexContent).not.toMatch(/lib\/hello/); }); + + it('should work for projects without sourceRoot', async () => { + const projectConfig = readProjectConfiguration(appTree, 'my-lib'); + delete projectConfig.sourceRoot; + updateProjectConfiguration(appTree, 'my-lib', projectConfig); + + await componentGenerator(appTree, { + name: 'my-lib/src/lib/hello', + style: 'css', + export: true, + }); + + const indexContent = appTree.read('my-lib/src/index.ts', 'utf-8'); + + expect(indexContent).not.toMatch(/lib\/hello/); + }); }); describe('--pascalCaseFiles', () => { diff --git a/packages/react/src/generators/component/lib/normalize-options.ts b/packages/react/src/generators/component/lib/normalize-options.ts index 21cfacf742..65be3fe3a6 100644 --- a/packages/react/src/generators/component/lib/normalize-options.ts +++ b/packages/react/src/generators/component/lib/normalize-options.ts @@ -36,7 +36,11 @@ export async function normalizeOptions( const { className } = names(name); - const { sourceRoot: projectSourceRoot, projectType } = project; + const { + sourceRoot: projectSourceRoot, + root: projectRoot, + projectType, + } = project; const styledModule = /^(css|scss|less|none)$/.test(options.style) ? null @@ -62,6 +66,6 @@ export async function normalizeOptions( className, fileName, filePath, - projectSourceRoot, + projectSourceRoot: projectSourceRoot ?? projectRoot, }; }