/
init.ts
103 lines (92 loc) · 3.04 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import {
addDependenciesToPackageJson,
convertNxGenerator,
formatFiles,
removeDependenciesFromPackageJson,
Tree,
} from '@nrwl/devkit';
import { Schema } from './schema';
import {
expoVersion,
expoSplashScreenVersion,
expoStatusBarVersion,
nxVersion,
reactNativeVersion,
reactNativeWebVersion,
typesReactNativeVersion,
expoMetroConfigVersion,
metroVersion,
testingLibraryReactNativeVersion,
testingLibraryJestNativeVersion,
reactNativeSvgTransformerVersion,
reactNativeSvgVersion,
expoCliVersion,
svgrWebpackVersion,
babelPresetExpoVersion,
easCliVersion,
deprecatedExpoCliVersion,
} from '../../utils/versions';
import {
reactDomVersion,
reactVersion,
reactTestRendererVersion,
typesReactVersion,
} from '@nrwl/react/src/utils/versions';
import { runTasksInSerial } from '@nrwl/workspace/src/utilities/run-tasks-in-serial';
import { jestInitGenerator } from '@nrwl/jest';
import { detoxInitGenerator } from '@nrwl/detox';
import { addGitIgnoreEntry } from './lib/add-git-ignore-entry';
import { initRootBabelConfig } from './lib/init-root-babel-config';
export async function expoInitGenerator(host: Tree, schema: Schema) {
addGitIgnoreEntry(host);
initRootBabelConfig(host);
const tasks = [moveDependency(host), updateDependencies(host)];
if (!schema.unitTestRunner || schema.unitTestRunner === 'jest') {
const jestTask = jestInitGenerator(host, {});
tasks.push(jestTask);
}
if (!schema.e2eTestRunner || schema.e2eTestRunner === 'detox') {
const detoxTask = await detoxInitGenerator(host, { skipFormat: true });
tasks.push(detoxTask);
}
if (!schema.skipFormat) {
await formatFiles(host);
}
return runTasksInSerial(...tasks);
}
export function updateDependencies(host: Tree) {
return addDependenciesToPackageJson(
host,
{
react: reactVersion,
'react-dom': reactDomVersion,
'react-native': reactNativeVersion,
expo: expoVersion,
'expo-splash-screen': expoSplashScreenVersion,
'expo-status-bar': expoStatusBarVersion,
'react-native-web': reactNativeWebVersion,
'@expo/metro-config': expoMetroConfigVersion,
'react-native-svg-transformer': reactNativeSvgTransformerVersion,
'react-native-svg': reactNativeSvgVersion,
},
{
'@nrwl/expo': nxVersion,
'@types/react': typesReactVersion,
'@types/react-native': typesReactNativeVersion,
'metro-resolver': metroVersion,
'react-test-renderer': reactTestRendererVersion,
'@testing-library/react-native': testingLibraryReactNativeVersion,
'@testing-library/jest-native': testingLibraryJestNativeVersion,
'expo-cli': deprecatedExpoCliVersion,
'@expo/cli': expoCliVersion,
'eas-cli': easCliVersion,
'@svgr/webpack': svgrWebpackVersion,
'babel-preset-expo': babelPresetExpoVersion,
}
);
}
function moveDependency(host: Tree) {
return removeDependenciesFromPackageJson(host, ['@nrwl/react-native'], []);
}
export default expoInitGenerator;
export const expoInitSchematic = convertNxGenerator(expoInitGenerator);