diff --git a/react-native-sdk/package.json b/react-native-sdk/package.json index 503f875f3f..0530e7a923 100644 --- a/react-native-sdk/package.json +++ b/react-native-sdk/package.json @@ -91,6 +91,7 @@ } }, "scripts": { + "postinstall": "node sdk_instructions.js", "prepare": "node prepare_sdk.js" }, "bugs": { @@ -99,4 +100,4 @@ "keywords": [ "react-native" ] -} \ No newline at end of file +} diff --git a/react-native-sdk/sdk_instructions.js b/react-native-sdk/sdk_instructions.js new file mode 100644 index 0000000000..8cb74a872a --- /dev/null +++ b/react-native-sdk/sdk_instructions.js @@ -0,0 +1,2 @@ +console.log('Run node node_modules/@jitsi/react-native-sdk/update_dependencies.js ' + + 'script to update the necessary dependencies'); diff --git a/react-native-sdk/update_dependencies.js b/react-native-sdk/update_dependencies.js new file mode 100644 index 0000000000..70fd12026c --- /dev/null +++ b/react-native-sdk/update_dependencies.js @@ -0,0 +1,49 @@ +/* eslint-disable guard-for-in */ + +const fs = require('fs'); + +const packageJSON = require('../../package.json'); + +const RNSDKpackageJSON = require('./package.json'); + +/** + * Updates dependencies from the app package.json with the peer dependencies of the RNSDK package.json. + */ +function updateDependencies() { + let updated = false; + + for (const key in RNSDKpackageJSON.peerDependencies) { + if (!packageJSON.dependencies.hasOwnProperty(key)) { + packageJSON.dependencies[key] + = '*' || RNSDKpackageJSON.peerDependencies[key]; + updated = true; + } + } + + if (!updated) { + return; + } + + packageJSON.dependencies = Object.keys(packageJSON.dependencies) + .sort() + .reduce((item, itemKey) => { + item[itemKey] = packageJSON.dependencies[itemKey]; + + return item; + }, {}); + + console.log( + 'Updating dependencies:', + Object.keys(packageJSON.dependencies) + ); + + const data = JSON.stringify(packageJSON, null, 2); + + fs.writeFileSync('../../package.json', data); + + console.log( + 'All needed dependencies have been updated. \nPlease run npm install.' + ); +} + +updateDependencies();