ソースを参照

fix(rnsdk) specify the RN version we support

Our SDK is only really tested with a single RN version, make sure to put
that in peerDependencies.

In addition, drop the peer dependency on @react-native/metro-config
since our project doesn't use it directly.
factor2
Saúl Ibarra Corretgé 10ヶ月前
コミット
aabc50da60
2個のファイルの変更16行の追加7行の削除
  1. 0
    1
      react-native-sdk/package.json
  2. 16
    6
      react-native-sdk/update_sdk_dependencies.js

+ 0
- 1
react-native-sdk/package.json ファイルの表示

58
     "peerDependencies": {
58
     "peerDependencies": {
59
         "@amplitude/react-native": "0.0.0",
59
         "@amplitude/react-native": "0.0.0",
60
         "@giphy/react-native-sdk": "0.0.0",
60
         "@giphy/react-native-sdk": "0.0.0",
61
-        "@react-native/metro-config": "*",
62
         "@react-native-async-storage/async-storage": "0.0.0",
61
         "@react-native-async-storage/async-storage": "0.0.0",
63
         "@react-native-clipboard/clipboard": "0.0.0",
62
         "@react-native-clipboard/clipboard": "0.0.0",
64
         "@react-native-community/netinfo": "0.0.0",
63
         "@react-native-community/netinfo": "0.0.0",

+ 16
- 6
react-native-sdk/update_sdk_dependencies.js ファイルの表示

1
 const fs = require('fs');
1
 const fs = require('fs');
2
+const semver = require('semver');
2
 
3
 
3
 const packageJSON = require('../package.json');
4
 const packageJSON = require('../package.json');
4
 
5
 
5
 const SDKPackageJSON = require('./package.json');
6
 const SDKPackageJSON = require('./package.json');
6
 
7
 
8
+// Skip checking these.
9
+const skipDeps = [ 'react', 'react-native' ];
10
+
7
 /**
11
 /**
8
  * Merges the dependency versions from the root package.json with the dependencies of the SDK package.json.
12
  * Merges the dependency versions from the root package.json with the dependencies of the SDK package.json.
9
  */
13
  */
18
 
22
 
19
     // Updates SDK peer dependencies.
23
     // Updates SDK peer dependencies.
20
     for (const key in packageJSON.dependencies) {
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
     // Updates SDK overrides dependencies.
40
     // Updates SDK overrides dependencies.
31
     for (const key in packageJSON.overrides) {
41
     for (const key in packageJSON.overrides) {
32
         if (SDKPackageJSON.overrides.hasOwnProperty(key)) {
42
         if (SDKPackageJSON.overrides.hasOwnProperty(key)) {

読み込み中…
キャンセル
保存