65 lines
1.4 KiB
TypeScript

import {
addDependenciesToPackageJson,
formatFiles,
GeneratorCallback,
removeDependenciesFromPackageJson,
runTasksInSerial,
Tree,
} from '@nx/devkit';
import { jestInitGenerator } from '@nx/jest';
import { initGenerator as jsInitGenerator } from '@nx/js';
import {
nxVersion,
tslibVersion,
typesNodeVersion,
} from '../../utils/versions';
import { Schema } from './schema';
function updateDependencies(tree: Tree) {
removeDependenciesFromPackageJson(tree, ['@nx/node'], []);
return addDependenciesToPackageJson(
tree,
{
tslib: tslibVersion,
},
{ '@nx/node': nxVersion, '@types/node': typesNodeVersion }
);
}
function normalizeOptions(schema: Schema) {
return {
...schema,
unitTestRunner: schema.unitTestRunner ?? 'jest',
};
}
export async function initGenerator(tree: Tree, schema: Schema) {
const options = normalizeOptions(schema);
const tasks: GeneratorCallback[] = [];
tasks.push(
await jsInitGenerator(tree, {
...schema,
tsConfigName: schema.rootProject ? 'tsconfig.json' : 'tsconfig.base.json',
skipFormat: true,
})
);
if (options.unitTestRunner === 'jest') {
tasks.push(
await jestInitGenerator(tree, { ...schema, testEnvironment: 'node' })
);
}
tasks.push(updateDependencies(tree));
if (!options.skipFormat) {
await formatFiles(tree);
}
return runTasksInSerial(...tasks);
}
export default initGenerator;