Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

update_dependencies.js 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /* eslint-disable guard-for-in, no-continue */
  2. /* global __dirname */
  3. const fs = require('fs');
  4. const path = require('path');
  5. const semver = require('semver');
  6. const pathToPackageJSON = path.resolve(__dirname, '../../../package.json');
  7. const packageJSON = require(pathToPackageJSON);
  8. const RNSDKpackageJSON = require(path.resolve(__dirname, './package.json'));
  9. /**
  10. * Updates dependencies from the app package.json with the peer dependencies of the RNSDK package.json.
  11. */
  12. function updateDependencies() {
  13. let updated = false;
  14. for (const key in RNSDKpackageJSON.peerDependencies) {
  15. if (!packageJSON.dependencies.hasOwnProperty(key)) {
  16. packageJSON.dependencies[key] = RNSDKpackageJSON.peerDependencies[key];
  17. updated = true;
  18. }
  19. if (!semver.valid(packageJSON.dependencies[key])
  20. && packageJSON.dependencies[key] !== RNSDKpackageJSON.peerDependencies[key]) {
  21. packageJSON.dependencies[key] = RNSDKpackageJSON.peerDependencies[key];
  22. updated = true;
  23. console.log(`
  24. ⚠️We changed ${key} version number from ${packageJSON.dependencies[key]} to ${RNSDKpackageJSON.peerDependencies[key]}`
  25. );
  26. continue;
  27. }
  28. if (semver.satisfies(RNSDKpackageJSON.peerDependencies[key], `=${packageJSON.dependencies[key]}`)) {
  29. continue;
  30. }
  31. if (semver.satisfies(RNSDKpackageJSON.peerDependencies[key], `>${packageJSON.dependencies[key]}`)) {
  32. packageJSON.dependencies[key] = RNSDKpackageJSON.peerDependencies[key];
  33. updated = true;
  34. console.log(`${key} is now set to ${RNSDKpackageJSON.peerDependencies[key]}`);
  35. }
  36. if (!semver.valid(RNSDKpackageJSON.peerDependencies[key])
  37. && RNSDKpackageJSON.peerDependencies[key].includes('github')
  38. && packageJSON.dependencies[key] !== RNSDKpackageJSON.peerDependencies[key]) {
  39. packageJSON.dependencies[key] = RNSDKpackageJSON.peerDependencies[key];
  40. updated = true;
  41. console.log(
  42. `A fix for ${key} is available on ${RNSDKpackageJSON.peerDependencies[key]}.
  43. This is now set on your end.`
  44. );
  45. }
  46. }
  47. packageJSON.overrides = packageJSON.overrides || {};
  48. for (const key in RNSDKpackageJSON.overrides) {
  49. if (!packageJSON.overrides.hasOwnProperty(key)) {
  50. packageJSON.overrides[key] = RNSDKpackageJSON.overrides[key];
  51. updated = true;
  52. }
  53. }
  54. if (!updated) {
  55. console.log('All your dependencies are up to date!');
  56. return;
  57. }
  58. console.log(`
  59. =========================
  60. 🚀 Your project was updated!
  61. 🛠 Make sure you run npm install
  62. 📱 If you are building for iOS run cd ios && pod install to link them.
  63. =========================
  64. `);
  65. packageJSON.dependencies = Object.keys(packageJSON.dependencies)
  66. .sort()
  67. .reduce((item, itemKey) => {
  68. item[itemKey] = packageJSON.dependencies[itemKey];
  69. return item;
  70. }, {});
  71. fs.writeFileSync(pathToPackageJSON, JSON.stringify(packageJSON, null, 2));
  72. console.log(
  73. 'All needed dependencies have been updated. \nPlease run npm install.'
  74. );
  75. }
  76. updateDependencies();