nx/packages/react/src/generators/application/lib/create-application-files.ts
Dirko Odendaal ee909cf7a5
feat(misc): conditionally allow starter template inclusion (#14268)
Co-authored-by: Colum Ferry <cferry09@gmail.com>
2023-01-27 15:07:07 +00:00

86 lines
2.3 KiB
TypeScript

import { NormalizedSchema } from '../schema';
import { names, offsetFromRoot, Tree, toJS, generateFiles } from '@nrwl/devkit';
import { join } from 'path';
import { getRelativePathToRootTsConfig } from '@nrwl/workspace/src/utilities/typescript';
import { createTsConfig } from '../../../utils/create-ts-config';
import { getInSourceVitestTestsTemplate } from '../../../utils/get-in-source-vitest-tests-template';
import { getAppTests } from './get-app-tests';
export function createApplicationFiles(host: Tree, options: NormalizedSchema) {
let styleSolutionSpecificAppFiles: string;
if (options.styledModule && options.style !== 'styled-jsx') {
styleSolutionSpecificAppFiles = '../files/style-styled-module';
} else if (options.style === 'styled-jsx') {
styleSolutionSpecificAppFiles = '../files/style-styled-jsx';
} else if (options.style === 'none') {
styleSolutionSpecificAppFiles = '../files/style-none';
} else if (options.globalCss) {
styleSolutionSpecificAppFiles = '../files/style-global-css';
} else {
styleSolutionSpecificAppFiles = '../files/style-css-module';
}
const relativePathToRootTsConfig = getRelativePathToRootTsConfig(
host,
options.appProjectRoot
);
const appTests = getAppTests(options);
const templateVariables = {
...names(options.name),
...options,
tmpl: '',
offsetFromRoot: offsetFromRoot(options.appProjectRoot),
appTests,
inSourceVitestTests: getInSourceVitestTestsTemplate(appTests),
};
generateFiles(
host,
join(
__dirname,
options.bundler === 'vite'
? '../files/base-vite'
: '../files/base-webpack'
),
options.appProjectRoot,
templateVariables
);
if (
options.unitTestRunner === 'none' ||
(options.unitTestRunner === 'vitest' && options.inSourceTests == true)
) {
host.delete(
`${options.appProjectRoot}/src/app/${options.fileName}.spec.tsx`
);
}
if (!options.minimal) {
generateFiles(
host,
join(__dirname, '../files/nx-welcome'),
options.appProjectRoot,
templateVariables
);
}
generateFiles(
host,
join(__dirname, styleSolutionSpecificAppFiles),
options.appProjectRoot,
templateVariables
);
if (options.js) {
toJS(host);
}
createTsConfig(
host,
options.appProjectRoot,
'app',
options,
relativePathToRootTsConfig
);
}