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 ); }