54 lines
1.5 KiB
TypeScript
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);
|