79 lines
1.9 KiB
TypeScript
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);
|
|
}
|