Properly deprecate the `Linter` enum in favor of the `LinterType` union type and remove unneeded internal usages.
64 lines
2.2 KiB
TypeScript
64 lines
2.2 KiB
TypeScript
import { Tree, readNxJson } from '@nx/devkit';
|
|
import {
|
|
determineProjectNameAndRootOptions,
|
|
ensureRootProjectName,
|
|
} from '@nx/devkit/src/generators/project-name-and-root-utils';
|
|
import { isUsingTsSolutionSetup } from '@nx/js/src/utils/typescript/ts-solution-setup';
|
|
import type { Schema as NodeApplicationGeneratorOptions } from '@nx/node/src/generators/application/schema';
|
|
import type { ApplicationGeneratorOptions, NormalizedOptions } from '../schema';
|
|
|
|
export async function normalizeOptions(
|
|
tree: Tree,
|
|
options: ApplicationGeneratorOptions
|
|
): Promise<NormalizedOptions> {
|
|
await ensureRootProjectName(options, 'application');
|
|
const { projectName: appProjectName, projectRoot: appProjectRoot } =
|
|
await determineProjectNameAndRootOptions(tree, {
|
|
name: options.name,
|
|
projectType: 'application',
|
|
directory: options.directory,
|
|
rootProject: options.rootProject,
|
|
});
|
|
options.rootProject = appProjectRoot === '.';
|
|
|
|
const nxJson = readNxJson(tree);
|
|
const addPlugin =
|
|
process.env.NX_ADD_PLUGINS !== 'false' &&
|
|
nxJson.useInferencePlugins !== false;
|
|
|
|
return {
|
|
addPlugin,
|
|
...options,
|
|
strict: options.strict ?? false,
|
|
appProjectName,
|
|
appProjectRoot,
|
|
linter: options.linter ?? 'eslint',
|
|
unitTestRunner: options.unitTestRunner ?? 'jest',
|
|
e2eTestRunner: options.e2eTestRunner ?? 'jest',
|
|
useProjectJson: options.useProjectJson ?? !isUsingTsSolutionSetup(tree),
|
|
};
|
|
}
|
|
|
|
export function toNodeApplicationGeneratorOptions(
|
|
options: NormalizedOptions
|
|
): NodeApplicationGeneratorOptions {
|
|
return {
|
|
name: options.name,
|
|
directory: options.directory,
|
|
frontendProject: options.frontendProject,
|
|
linter: options.linter,
|
|
skipFormat: true,
|
|
skipPackageJson: options.skipPackageJson,
|
|
standaloneConfig: options.standaloneConfig,
|
|
tags: options.tags,
|
|
unitTestRunner: options.unitTestRunner,
|
|
e2eTestRunner: options.e2eTestRunner,
|
|
setParserOptionsProject: options.setParserOptionsProject,
|
|
rootProject: options.rootProject,
|
|
bundler: 'webpack', // Some features require webpack plugins such as TS transformers
|
|
isNest: true,
|
|
addPlugin: options.addPlugin,
|
|
useProjectJson: options.useProjectJson,
|
|
};
|
|
}
|