nx/packages/react/src/generators/application/lib/create-application-files.ts

79 lines
1.9 KiB
TypeScript

import { NormalizedSchema } from '../schema';
import {
names,
offsetFromRoot,
Tree,
toJS,
generateFiles,
joinPathFragments,
updateJson,
} from '@nrwl/devkit';
import { join } from 'path';
function updateTsConfig(host: Tree, options: NormalizedSchema) {
updateJson(
host,
joinPathFragments(options.appProjectRoot, 'tsconfig.json'),
(json) => {
if (options.strict) {
json.compilerOptions = {
...json.compilerOptions,
forceConsistentCasingInFileNames: true,
strict: true,
noImplicitReturns: true,
noFallthroughCasesInSwitch: true,
};
}
return json;
}
);
}
export function createApplicationFiles(host: Tree, options: NormalizedSchema) {
let styleSolutionSpecificAppFiles: string;
if (options.styledModule && options.style !== 'styled-jsx') {
styleSolutionSpecificAppFiles = '../files/styled-module';
} else if (options.style === 'styled-jsx') {
styleSolutionSpecificAppFiles = '../files/styled-jsx';
} else if (options.style === 'none') {
styleSolutionSpecificAppFiles = '../files/none';
} else if (options.globalCss) {
styleSolutionSpecificAppFiles = '../files/global-css';
} else {
styleSolutionSpecificAppFiles = '../files/css-module';
}
const templateVariables = {
...names(options.name),
...options,
tmpl: '',
offsetFromRoot: offsetFromRoot(options.appProjectRoot),
};
generateFiles(
host,
join(__dirname, '../files/common'),
options.appProjectRoot,
templateVariables
);
if (options.unitTestRunner === 'none') {
host.delete(
`${options.appProjectRoot}/src/app/${options.fileName}.spec.tsx`
);
}
generateFiles(
host,
join(__dirname, styleSolutionSpecificAppFiles),
options.appProjectRoot,
templateVariables
);
if (options.js) {
toJS(host);
}
updateTsConfig(host, options);
}