47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import {
|
|
chain,
|
|
Rule,
|
|
SchematicContext,
|
|
Tree,
|
|
} from '@angular-devkit/schematics';
|
|
import { addLintFiles, formatFiles } from '@nrwl/workspace';
|
|
import { extraEslintDependencies, reactEslintJson } from '../../utils/lint';
|
|
import init from '../init/init';
|
|
import { Schema } from './schema';
|
|
import { createApplicationFiles } from './lib/create-application-files';
|
|
import { updateJestConfig } from './lib/update-jest-config';
|
|
import { normalizeOptions } from './lib/normalize-options';
|
|
import { addProject } from './lib/add-project';
|
|
import { addCypress } from './lib/add-cypress';
|
|
import { addJest } from './lib/add-jest';
|
|
import { addRouting } from './lib/add-routing';
|
|
import { setDefaults } from './lib/set-defaults';
|
|
import { updateNxJson } from './lib/update-nx-json';
|
|
import { addStyledModuleDependencies } from '../../rules/add-styled-dependencies';
|
|
|
|
export default function (schema: Schema): Rule {
|
|
return (host: Tree, context: SchematicContext) => {
|
|
const options = normalizeOptions(host, schema);
|
|
return chain([
|
|
init({
|
|
...options,
|
|
skipFormat: true,
|
|
}),
|
|
addLintFiles(options.appProjectRoot, options.linter, {
|
|
localConfig: reactEslintJson,
|
|
extraPackageDeps: extraEslintDependencies,
|
|
}),
|
|
createApplicationFiles(options),
|
|
updateNxJson(options),
|
|
addProject(options),
|
|
addCypress(options),
|
|
addJest(options),
|
|
updateJestConfig(options),
|
|
addStyledModuleDependencies(options.styledModule),
|
|
addRouting(options, context),
|
|
setDefaults(options),
|
|
formatFiles(options),
|
|
]);
|
|
};
|
|
}
|