Jonathan Cammisuli d9aef75bd5
chore(react): move react schematics to generators (#4745)
* chore(react): move react schematics to generators

* chore(react): update lib generators

* chore(react): update redux generators

* chore(react): move react story book generators

* chore(react): add old implementation for update babel in next

* chore(react): rename tsconfig json template files to include __tmpl__

* chore(react): update deps

* chore(react): fix component template file

* chore(react): remove angular-devkit deps

* chore(react): remove angular-devkit deps
2021-02-10 21:30:55 -05:00

78 lines
2.0 KiB
TypeScript

import { InitSchema } from './schema';
import {
addDependenciesToPackageJson,
convertNxGenerator,
GeneratorCallback,
readWorkspaceConfiguration,
setDefaultCollection,
Tree,
updateWorkspaceConfiguration,
} from '@nrwl/devkit';
import { jestInitGenerator } from '@nrwl/jest';
import { cypressInitGenerator } from '@nrwl/cypress';
import { webInitGenerator } from '@nrwl/web';
import {
nxVersion,
reactDomVersion,
reactVersion,
testingLibraryReactVersion,
typesReactDomVersion,
typesReactVersion,
} from '../../utils/versions';
function setDefault(host: Tree) {
const workspace = readWorkspaceConfiguration(host);
workspace.generators = workspace.generators || {};
const reactGenerators = workspace.generators['@nrwl/react'] || {};
const generators = {
...workspace.generators,
'@nrwl/react': {
...reactGenerators,
application: {
...reactGenerators.application,
babel: true,
},
},
};
updateWorkspaceConfiguration(host, { ...workspace, generators });
setDefaultCollection(host, '@nrwl/react');
}
export async function reactInitGenerator(host: Tree, schema: InitSchema) {
let installTask: GeneratorCallback;
setDefault(host);
if (!schema.unitTestRunner || schema.unitTestRunner === 'jest') {
installTask = jestInitGenerator(host, {});
}
if (!schema.e2eTestRunner || schema.e2eTestRunner === 'cypress') {
installTask = cypressInitGenerator(host) || installTask;
}
await webInitGenerator(host, schema);
installTask = addDependenciesToPackageJson(
host,
{
'core-js': '^3.6.5',
react: reactVersion,
'react-dom': reactDomVersion,
tslib: '^2.0.0',
},
{
'@nrwl/react': nxVersion,
'@types/react': typesReactVersion,
'@types/react-dom': typesReactDomVersion,
'@testing-library/react': testingLibraryReactVersion,
}
);
return installTask;
}
export default reactInitGenerator;
export const reactInitSchematic = convertNxGenerator(reactInitGenerator);