12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- const fs = require('fs');
- const semver = require('semver');
-
- const packageJSON = require('../package.json');
-
- const SDKPackageJSON = require('./package.json');
-
- // Skip checking these.
- const skipDeps = [ 'react', 'react-native' ];
-
- /**
- * Merges the dependency versions from the root package.json with the dependencies of the SDK package.json.
- */
- function mergeDependencyVersions() {
-
- // Updates SDK dependencies to match project dependencies.
- for (const key in SDKPackageJSON.dependencies) {
- if (SDKPackageJSON.dependencies.hasOwnProperty(key)) {
- SDKPackageJSON.dependencies[key] = packageJSON.dependencies[key] || packageJSON.devDependencies[key];
- }
- }
-
- // Updates SDK peer dependencies.
- for (const key in packageJSON.dependencies) {
- if (SDKPackageJSON.peerDependencies.hasOwnProperty(key) && !skipDeps.includes(key)) {
- SDKPackageJSON.peerDependencies[key] = packageJSON.dependencies[key];
- }
- }
-
- // Set RN peer dependency.
- const rnVersion = semver.parse(packageJSON.dependencies['react-native']);
-
- if (!rnVersion) {
- throw new Error('failed to parse React Native version');
- }
-
- // In RN the "major" version is the Semver minor.
- SDKPackageJSON.peerDependencies['react-native'] = `~0.${rnVersion.minor}.0`;
-
- // Updates SDK overrides dependencies.
- for (const key in packageJSON.overrides) {
- if (SDKPackageJSON.overrides.hasOwnProperty(key)) {
- SDKPackageJSON.overrides[key] = packageJSON.overrides[key];
- }
- }
-
- const data = JSON.stringify(SDKPackageJSON, null, 4);
-
- fs.writeFileSync('package.json', data);
- }
-
- mergeDependencyVersions();
|