Skip to content

Commit

Permalink
feat(devkit): warn users the project name and root will not be derived (
Browse files Browse the repository at this point in the history
  • Loading branch information
FrozenPandaz authored Aug 21, 2023
1 parent 1bb9c11 commit b309d83
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ describe('determineProjectNameAndRootOptions', () => {
message: `Derived:
Name: shared-lib-name
Root: shared/lib-name`,
name: 'shared-lib-name @ shared/lib-name (This was derived from the folder structure. Please provide the exact name and directory in the future)',
name: 'shared-lib-name @ shared/lib-name',
},
]);

Expand Down Expand Up @@ -680,7 +680,7 @@ describe('determineProjectNameAndRootOptions', () => {
message: `Derived:
Name: shared-lib-name
Root: libs/shared/lib-name`,
name: 'shared-lib-name @ libs/shared/lib-name (This was derived from the folder structure. Please provide the exact name and directory in the future)',
name: 'shared-lib-name @ libs/shared/lib-name',
},
]);

Expand Down
25 changes: 20 additions & 5 deletions packages/devkit/src/generators/project-name-and-root-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,14 @@ import {
} from '../utils/get-workspace-layout';
import { names } from '../utils/names';

const { joinPathFragments, normalizePath, readJson, readNxJson, updateNxJson } =
requireNx();
const {
joinPathFragments,
normalizePath,
logger,
readJson,
readNxJson,
updateNxJson,
} = requireNx();

export type ProjectNameAndRootFormat = 'as-provided' | 'derived';
export type ProjectGenerationOptions = {
Expand Down Expand Up @@ -109,7 +115,7 @@ function validateName(
async function determineFormat(
tree: Tree,
formats: ProjectNameAndRootFormats,
callingGenerator: string
callingGenerator: string | null
): Promise<ProjectNameAndRootFormat> {
if (!formats.derived) {
return 'as-provided';
Expand All @@ -126,7 +132,7 @@ async function determineFormat(
const derivedDescription = `Derived:
Name: ${formats['derived'].projectName}
Root: ${formats['derived'].projectRoot}`;
const derivedSelectedValue = `${formats['derived'].projectName} @ ${formats['derived'].projectRoot} (This was derived from the folder structure. Please provide the exact name and directory in the future)`;
const derivedSelectedValue = `${formats['derived'].projectName} @ ${formats['derived'].projectRoot}`;

const result = await prompt<{ format: ProjectNameAndRootFormat }>({
type: 'select',
Expand All @@ -147,19 +153,28 @@ async function determineFormat(
}).then(({ format }) =>
format === asProvidedSelectedValue ? 'as-provided' : 'derived'
);

const deprecationWarning =
'In Nx 18, generating projects will no longer derive the name and root. Please provide the exact project name and root in the future.';

if (result === 'as-provided' && callingGenerator) {
const { saveDefault } = await prompt<{ saveDefault: boolean }>({
type: 'confirm',
message: 'Would you like to save this layout as a default?',
message: `Would you like to configure Nx to always take project name and root as provided for ${callingGenerator}?`,
name: 'saveDefault',
initial: true,
});
if (saveDefault) {
const nxJson = readNxJson(tree);
nxJson.generators ??= {};
nxJson.generators[callingGenerator] ??= {};
nxJson.generators[callingGenerator].projectNameAndRootFormat = result;
updateNxJson(tree, nxJson);
} else {
logger.warn(deprecationWarning);
}
} else {
logger.warn(deprecationWarning);
}

return result;
Expand Down

1 comment on commit b309d83

@vercel
Copy link

@vercel vercel bot commented on b309d83 Aug 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

nx-dev – ./

nx-dev-nrwl.vercel.app
nx-dev-git-master-nrwl.vercel.app
nx-five.vercel.app
nx.dev

Please sign in to comment.