86 lines
2.2 KiB
TypeScript
86 lines
2.2 KiB
TypeScript
import {
|
|
addDependenciesToPackageJson,
|
|
removeDependenciesFromPackageJson,
|
|
runTasksInSerial,
|
|
type GeneratorCallback,
|
|
type Tree,
|
|
readNxJson,
|
|
createProjectGraphAsync,
|
|
} from '@nx/devkit';
|
|
import { addPlugin } from '@nx/devkit/src/utils/add-plugin';
|
|
import { reactDomVersion, reactVersion } from '@nx/react/src/utils/versions';
|
|
import { addGitIgnoreEntry } from '../../utils/add-gitignore-entry';
|
|
import { nextVersion, nxVersion } from '../../utils/versions';
|
|
import type { InitSchema } from './schema';
|
|
|
|
function updateDependencies(host: Tree, schema: InitSchema) {
|
|
const tasks: GeneratorCallback[] = [];
|
|
|
|
tasks.push(removeDependenciesFromPackageJson(host, ['@nx/next'], []));
|
|
|
|
tasks.push(
|
|
addDependenciesToPackageJson(
|
|
host,
|
|
{
|
|
next: nextVersion,
|
|
react: reactVersion,
|
|
'react-dom': reactDomVersion,
|
|
},
|
|
{
|
|
'@nx/next': nxVersion,
|
|
},
|
|
undefined,
|
|
schema.keepExistingVersions
|
|
)
|
|
);
|
|
|
|
return runTasksInSerial(...tasks);
|
|
}
|
|
|
|
export function nextInitGenerator(tree: Tree, schema: InitSchema) {
|
|
return nextInitGeneratorInternal(tree, { addPlugin: false, ...schema });
|
|
}
|
|
|
|
export async function nextInitGeneratorInternal(
|
|
host: Tree,
|
|
schema: InitSchema
|
|
) {
|
|
const nxJson = readNxJson(host);
|
|
const addPluginDefault =
|
|
process.env.NX_ADD_PLUGINS !== 'false' &&
|
|
nxJson.useInferencePlugins !== false;
|
|
|
|
schema.addPlugin ??= addPluginDefault;
|
|
if (schema.addPlugin) {
|
|
const { createNodes } = await import('../../plugins/plugin');
|
|
await addPlugin(
|
|
host,
|
|
await createProjectGraphAsync(),
|
|
'@nx/next/plugin',
|
|
createNodes,
|
|
{
|
|
startTargetName: ['start', 'next:start', 'next-start'],
|
|
buildTargetName: ['build', 'next:build', 'next-build'],
|
|
devTargetName: ['dev', 'next:dev', 'next-dev'],
|
|
serveStaticTargetName: [
|
|
'serve-static',
|
|
'next:serve-static',
|
|
'next-serve-static',
|
|
],
|
|
},
|
|
schema.updatePackageScripts
|
|
);
|
|
}
|
|
|
|
addGitIgnoreEntry(host);
|
|
|
|
let installTask: GeneratorCallback = () => {};
|
|
if (!schema.skipPackageJson) {
|
|
installTask = updateDependencies(host, schema);
|
|
}
|
|
|
|
return installTask;
|
|
}
|
|
|
|
export default nextInitGenerator;
|