55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import { extractLayoutDirectory, Tree } from '@nx/devkit';
|
|
import { getWorkspaceLayout, joinPathFragments, names } from '@nx/devkit';
|
|
import { Linter } from '@nx/linter';
|
|
import type { Schema as NodeApplicationGeneratorOptions } from '@nx/node/src/generators/application/schema';
|
|
import type { ApplicationGeneratorOptions, NormalizedOptions } from '../schema';
|
|
|
|
export function normalizeOptions(
|
|
tree: Tree,
|
|
options: ApplicationGeneratorOptions
|
|
): NormalizedOptions {
|
|
const { layoutDirectory, projectDirectory } = extractLayoutDirectory(
|
|
options.directory
|
|
);
|
|
|
|
const appDirectory = projectDirectory
|
|
? `${names(projectDirectory).fileName}/${names(options.name).fileName}`
|
|
: names(options.name).fileName;
|
|
|
|
const appProjectRoot = options.rootProject
|
|
? '.'
|
|
: joinPathFragments(
|
|
layoutDirectory ?? getWorkspaceLayout(tree).appsDir,
|
|
appDirectory
|
|
);
|
|
|
|
return {
|
|
...options,
|
|
appProjectRoot,
|
|
linter: options.linter ?? Linter.EsLint,
|
|
unitTestRunner: options.unitTestRunner ?? 'jest',
|
|
e2eTestRunner: options.e2eTestRunner ?? 'jest',
|
|
};
|
|
}
|
|
|
|
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,
|
|
};
|
|
}
|