Files
Detox/scripts/change_react_native_version.js
T
mark.devandGitHub f8f0b0cc02 Detox with RN0.85.2 support (#4936)
* initial commit for 0.85.0-rc.7

* RN 0.85.2 update

* CI pipeline for RN085.2

* config update

* updated config

* update for ios 0.84

* iOS on RN0.84

* RN084 update

* pinned to RN085.2

* update for rn084

* cleanup
2026-05-05 09:35:29 +03:00

103 lines
3.9 KiB
JavaScript

const fs = require('fs');
const path = require('path');
const https = require('https');
async function run() {
const projectPath = process.argv[2];
const reactNativeVersion = process.argv[3];
const depsSection = process.argv[4] || 'dependencies';
const filePath = path.join(process.cwd(), projectPath, 'package.json');
console.log(`Trying to change react-native dependency in ${filePath}`);
let packageJson = require(filePath);
if (depsSection === 'devDependencies') {
console.log(`Changed dependency:
react-native: ${reactNativeVersion}`);
packageJson.devDependencies['react-native'] = reactNativeVersion;
} else {
const data = await fetch(`https://registry.npmjs.org/react-native/${reactNativeVersion}`);
const reactVersion = data.peerDependencies.react.replace('^', '');
console.log(`Changed dependencies:
react-native: ${reactNativeVersion}
react: ${reactVersion}`);
packageJson.dependencies['react'] = reactVersion;
packageJson.dependencies['react-native'] = reactNativeVersion;
}
updateReactNative77DevDependencies(reactNativeVersion, packageJson);
updateReactNative84DevDependencies(reactNativeVersion, packageJson);
updateReactNative85DevDependencies(reactNativeVersion, packageJson);
fs.writeFileSync(filePath, JSON.stringify(packageJson, null, 2));
}
function updateReactNative77DevDependencies(reactNativeVersion, packageJson) {
const minorVersion = reactNativeVersion.split('.')[1];
if (minorVersion !== '77') {
return;
}
packageJson.devDependencies['@react-native/babel-preset'] = '0.77.2';
packageJson.devDependencies['@react-native/eslint-config'] = '0.77.2';
packageJson.devDependencies['@react-native/metro-config'] = '0.77.2';
packageJson.devDependencies['@react-native/typescript-config'] = '0.77.2';
packageJson.devDependencies['@react-native-community/cli'] = '15.0.1';
packageJson.devDependencies['@react-native-community/cli-platform-android'] = '15.0.1';
packageJson.devDependencies['@react-native-community/cli-platform-ios'] = '15.0.1';
}
function updateReactNative84DevDependencies(reactNativeVersion, packageJson) {
const minorVersion = reactNativeVersion.split('.')[1];
if (minorVersion !== '84') {
return;
}
packageJson.devDependencies['@react-native/babel-preset'] = '0.84.0';
packageJson.devDependencies['@react-native/eslint-config'] = '0.84.0';
packageJson.devDependencies['@react-native/metro-config'] = '0.84.0';
packageJson.devDependencies['@react-native/typescript-config'] = '0.84.0';
packageJson.devDependencies['@react-native-community/cli'] = '20.1.0';
packageJson.devDependencies['@react-native-community/cli-platform-android'] = '20.1.0';
packageJson.devDependencies['@react-native-community/cli-platform-ios'] = '20.1.0';
}
function updateReactNative85DevDependencies(reactNativeVersion, packageJson) {
const minorVersion = reactNativeVersion.split('.')[1];
if (minorVersion !== '85') {
return;
}
packageJson.devDependencies['@react-native/babel-preset'] = reactNativeVersion;
packageJson.devDependencies['@react-native/eslint-config'] = reactNativeVersion;
packageJson.devDependencies['@react-native/metro-config'] = reactNativeVersion;
packageJson.devDependencies['@react-native/typescript-config'] = reactNativeVersion;
packageJson.devDependencies['@react-native-community/cli'] = '20.1.0';
packageJson.devDependencies['@react-native-community/cli-platform-android'] = '20.1.0';
packageJson.devDependencies['@react-native-community/cli-platform-ios'] = '20.1.0';
}
async function fetch(url) {
return new Promise((resolve, reject) => {
https.get(url, res => {
res.setEncoding('utf8');
let body = "";
res.on('data', data => {
body += data;
});
res.on('end', () => {
body = JSON.parse(body);
resolve(body);
});
res.on('error', (error) => {
reject(error);
});
});
});
}
run();