|
@@ -1,9 +1,13 @@
|
1
|
1
|
const fs = require('fs');
|
|
2
|
+const semver = require('semver');
|
2
|
3
|
|
3
|
4
|
const packageJSON = require('../package.json');
|
4
|
5
|
|
5
|
6
|
const SDKPackageJSON = require('./package.json');
|
6
|
7
|
|
|
8
|
+// Skip checking these.
|
|
9
|
+const skipDeps = [ 'react', 'react-native' ];
|
|
10
|
+
|
7
|
11
|
/**
|
8
|
12
|
* Merges the dependency versions from the root package.json with the dependencies of the SDK package.json.
|
9
|
13
|
*/
|
|
@@ -18,15 +22,21 @@ function mergeDependencyVersions() {
|
18
|
22
|
|
19
|
23
|
// Updates SDK peer dependencies.
|
20
|
24
|
for (const key in packageJSON.dependencies) {
|
21
|
|
- if (SDKPackageJSON.peerDependencies.hasOwnProperty(key)) {
|
22
|
|
-
|
23
|
|
- // Updates all peer dependencies except react and react-native.
|
24
|
|
- if (key !== 'react' && key !== 'react-native') {
|
25
|
|
- SDKPackageJSON.peerDependencies[key] = packageJSON.dependencies[key];
|
26
|
|
- }
|
|
25
|
+ if (SDKPackageJSON.peerDependencies.hasOwnProperty(key) && !skipDeps.includes(key)) {
|
|
26
|
+ SDKPackageJSON.peerDependencies[key] = packageJSON.dependencies[key];
|
27
|
27
|
}
|
28
|
28
|
}
|
29
|
29
|
|
|
30
|
+ // Set RN peer dependency.
|
|
31
|
+ const rnVersion = semver.parse(packageJSON.dependencies['react-native']);
|
|
32
|
+
|
|
33
|
+ if (!rnVersion) {
|
|
34
|
+ throw new Error('failed to parse React Native version');
|
|
35
|
+ }
|
|
36
|
+
|
|
37
|
+ // In RN the "major" version is the Semver minor.
|
|
38
|
+ SDKPackageJSON.peerDependencies['react-native'] = `~0.${rnVersion.minor}.0`;
|
|
39
|
+
|
30
|
40
|
// Updates SDK overrides dependencies.
|
31
|
41
|
for (const key in packageJSON.overrides) {
|
32
|
42
|
if (SDKPackageJSON.overrides.hasOwnProperty(key)) {
|