/
init.ts
65 lines (58 loc) · 1.86 KB
/
init.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import { cypressInitGenerator } from '@nrwl/cypress';
import {
addDependenciesToPackageJson,
convertNxGenerator,
formatFiles,
GeneratorCallback,
removeDependenciesFromPackageJson,
Tree,
writeJson,
} from '@nrwl/devkit';
import { jestInitGenerator } from '@nrwl/jest';
import { runTasksInSerial } from '@nrwl/workspace/src/utilities/run-tasks-in-serial';
import { setDefaultCollection } from '@nrwl/workspace/src/utilities/set-default-collection';
import { nxVersion } from '../../utils/versions';
import { Schema } from './schema';
function updateDependencies(tree: Tree) {
removeDependenciesFromPackageJson(tree, ['@nrwl/web'], []);
return addDependenciesToPackageJson(
tree,
{
'core-js': '^3.6.5',
'regenerator-runtime': '0.13.7',
tslib: '^2.0.0',
},
{
'@nrwl/web': nxVersion,
}
);
}
function initRootBabelConfig(tree: Tree) {
if (tree.exists('/babel.config.json') || tree.exists('/babel.config.js')) {
return;
}
writeJson(tree, '/babel.config.json', {
babelrcRoots: ['*'], // Make sure .babelrc files other than root can be loaded in a monorepo
});
}
export async function webInitGenerator(tree: Tree, schema: Schema) {
let tasks: GeneratorCallback[] = [];
setDefaultCollection(tree, '@nrwl/web');
if (!schema.unitTestRunner || schema.unitTestRunner === 'jest') {
const jestTask = jestInitGenerator(tree, {});
tasks.push(jestTask);
}
if (!schema.e2eTestRunner || schema.e2eTestRunner === 'cypress') {
const cypressTask = cypressInitGenerator(tree, {});
tasks.push(cypressTask);
}
const installTask = updateDependencies(tree);
tasks.push(installTask);
initRootBabelConfig(tree);
if (!schema.skipFormat) {
await formatFiles(tree);
}
return runTasksInSerial(...tasks);
}
export default webInitGenerator;
export const webInitSchematic = convertNxGenerator(webInitGenerator);