84 lines
2.1 KiB
TypeScript
84 lines
2.1 KiB
TypeScript
import {
|
|
addDependenciesToPackageJson,
|
|
convertNxGenerator,
|
|
ensurePackage,
|
|
GeneratorCallback,
|
|
runTasksInSerial,
|
|
Tree,
|
|
} from '@nx/devkit';
|
|
|
|
import { reactDomVersion, reactVersion } from '@nx/react/src/utils/versions';
|
|
import reactInitGenerator from '@nx/react/src/generators/init/init';
|
|
import { initGenerator as jsInitGenerator } from '@nx/js';
|
|
|
|
import {
|
|
eslintConfigNextVersion,
|
|
nextVersion,
|
|
nxVersion,
|
|
tsLibVersion,
|
|
} from '../../utils/versions';
|
|
import { InitSchema } from './schema';
|
|
import { addGitIgnoreEntry } from '../../utils/add-gitignore-entry';
|
|
|
|
function updateDependencies(host: Tree) {
|
|
return addDependenciesToPackageJson(
|
|
host,
|
|
{
|
|
'@nx/next': nxVersion,
|
|
next: nextVersion,
|
|
react: reactVersion,
|
|
'react-dom': reactDomVersion,
|
|
tslib: tsLibVersion,
|
|
},
|
|
{
|
|
'eslint-config-next': eslintConfigNextVersion,
|
|
}
|
|
);
|
|
}
|
|
|
|
export async function nextInitGenerator(host: Tree, schema: InitSchema) {
|
|
const tasks: GeneratorCallback[] = [];
|
|
|
|
tasks.push(
|
|
await jsInitGenerator(host, {
|
|
...schema,
|
|
skipFormat: true,
|
|
})
|
|
);
|
|
|
|
if (!schema.unitTestRunner || schema.unitTestRunner === 'jest') {
|
|
const { jestInitGenerator } = ensurePackage<typeof import('@nx/jest')>(
|
|
'@nx/jest',
|
|
nxVersion
|
|
);
|
|
const jestTask = await jestInitGenerator(host, schema);
|
|
tasks.push(jestTask);
|
|
}
|
|
if (!schema.e2eTestRunner || schema.e2eTestRunner === 'cypress') {
|
|
const { cypressInitGenerator } = ensurePackage<
|
|
typeof import('@nx/cypress')
|
|
>('@nx/cypress', nxVersion);
|
|
const cypressTask = await cypressInitGenerator(host, {});
|
|
tasks.push(cypressTask);
|
|
}
|
|
|
|
const reactTask = await reactInitGenerator(host, {
|
|
...schema,
|
|
skipFormat: true,
|
|
skipBabelConfig: true,
|
|
});
|
|
tasks.push(reactTask);
|
|
|
|
if (!schema.skipPackageJson) {
|
|
const installTask = updateDependencies(host);
|
|
tasks.push(installTask);
|
|
}
|
|
|
|
addGitIgnoreEntry(host);
|
|
|
|
return runTasksInSerial(...tasks);
|
|
}
|
|
|
|
export default nextInitGenerator;
|
|
export const nextInitSchematic = convertNxGenerator(nextInitGenerator);
|