65 lines
1.4 KiB
TypeScript
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;
|