54 lines
1.5 KiB
TypeScript

import {
addDependenciesToPackageJson,
convertNxGenerator,
GeneratorCallback,
Tree,
} from '@nrwl/devkit';
import { setDefaultCollection } from '@nrwl/workspace/src/utilities/set-default-collection';
import { parallelizeTasks } from '@nrwl/workspace/src/utilities/parallelize-tasks';
import { jestInitGenerator } from '@nrwl/jest';
import { cypressInitGenerator } from '@nrwl/cypress';
import { reactDomVersion, reactInitGenerator, reactVersion } from '@nrwl/react';
import { nextVersion } from '../../utils/versions';
import { InitSchema } from './schema';
function updateDependencies(host: Tree) {
return addDependenciesToPackageJson(
host,
{
next: nextVersion,
react: reactVersion,
'react-dom': reactDomVersion,
tslib: '^2.0.0',
},
{}
);
}
export async function nextInitGenerator(host: Tree, schema: InitSchema) {
const tasks: GeneratorCallback[] = [];
setDefaultCollection(host, '@nrwl/next');
if (!schema.unitTestRunner || schema.unitTestRunner === 'jest') {
const jestTask = jestInitGenerator(host, {});
tasks.push(jestTask);
}
if (!schema.e2eTestRunner || schema.e2eTestRunner === 'cypress') {
const cypressTask = cypressInitGenerator(host);
tasks.push(cypressTask);
}
const reactTask = await reactInitGenerator(host, schema);
tasks.push(reactTask);
const installTask = updateDependencies(host);
tasks.push(installTask);
return parallelizeTasks(...tasks);
}
export default nextInitGenerator;
export const nextInitSchematic = convertNxGenerator(nextInitGenerator);