/
xplat.ts
102 lines (96 loc) · 3.47 KB
/
xplat.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
import { Tree, SchematicContext } from '@angular-devkit/schematics';
import {
XplatHelpers,
getNpmScope,
IXplatSettings,
getJsonFromFile
} from '@nstudio/xplat';
import {
ionicAngularVersion,
ionicAngularToolkitVersion,
ngDevKitArchitect,
ngDevKitBuild,
ngDevKitCore,
ngDevKitSchematics,
angularVersion,
coreJsVersion,
rxjsVersion,
zonejsVersion,
codelyzerVersion,
ngxTranslateVersion,
ngxTranslateHttpLoaderVersion,
reflectMetadataVersion,
xplatVersion
} from './versions';
export namespace XplatIonicAngularHelpers {
export function updateRootDeps(options: XplatHelpers.Schema) {
return (tree: Tree, context: SchematicContext) => {
const dependencies = {};
const devDependencies = {};
const xplatFoldername = XplatHelpers.getXplatFoldername('web', 'angular');
if (options.useXplat) {
dependencies[
`@${getNpmScope()}/web-scss`
] = `file:xplat/${xplatFoldername}/scss`;
const ionicXplatFoldername = XplatHelpers.getXplatFoldername(
'ionic',
'angular'
);
dependencies[
`@${getNpmScope()}/ionic-scss`
] = `file:xplat/${ionicXplatFoldername}/scss`;
}
const packageJson = getJsonFromFile(tree, 'package.json');
const hasAngularDeps = packageJson.dependencies['@angular/core'];
if (!hasAngularDeps) {
dependencies[`@angular/animations`] = angularVersion;
dependencies[`@angular/common`] = angularVersion;
dependencies[`@angular/compiler`] = angularVersion;
dependencies[`@angular/core`] = angularVersion;
dependencies[`@angular/forms`] = angularVersion;
dependencies[`@angular/platform-browser`] = angularVersion;
dependencies[`@angular/platform-browser-dynamic`] = angularVersion;
dependencies[`@angular/router`] = angularVersion;
dependencies[`core-js`] = coreJsVersion;
dependencies[`rxjs`] = rxjsVersion;
dependencies[`zone.js`] = zonejsVersion;
devDependencies[`@angular/cli`] = angularVersion;
devDependencies[`@angular/compiler-cli`] = angularVersion;
devDependencies[`@angular/language-service`] = angularVersion;
devDependencies[`codelyzer`] = codelyzerVersion;
}
if (options.useXplat) {
dependencies['@ngx-translate/core'] = ngxTranslateVersion;
dependencies[
'@ngx-translate/http-loader'
] = ngxTranslateHttpLoaderVersion;
}
dependencies['reflect-metadata'] = reflectMetadataVersion;
return XplatHelpers.updatePackageForXplat(options, {
dependencies: {
...dependencies,
'@ionic/angular': ionicAngularVersion
},
devDependencies: {
...devDependencies,
'@angular-devkit/architect': ngDevKitArchitect,
'@angular-devkit/build-angular': ngDevKitBuild,
'@angular-devkit/core': ngDevKitCore,
'@angular-devkit/schematics': ngDevKitSchematics,
'@ionic/angular-toolkit': ionicAngularToolkitVersion,
'@types/jasmine': '~2.8.8',
'@types/jasminewd2': '~2.0.3',
codelyzer: '~4.5.0',
'jasmine-core': '~2.99.1',
'jasmine-spec-reporter': '~4.2.1',
karma: '~4.1.0',
'karma-chrome-launcher': '~2.2.0',
'karma-coverage-istanbul-reporter': '~2.0.1',
'karma-jasmine': '~1.1.2',
'karma-jasmine-html-reporter': '^0.2.2',
protractor: '^5.4.2'
}
})(tree, context);
};
}
}