Skip to content

Commit fa2444a

Browse files
committed
chore(build): update all intra-monorepo peerDependencies, aggregate to one commit
previously it only updated the app module, but now we have packages that depend on analytics after #4850 previously it did one commit per module, which was effectively a git log spam
1 parent 566ff7a commit fa2444a

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

scripts/postversion.js

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
const { sep } = require('path');
22
const { execSync } = require('child_process');
33
const { readFileSync, writeFileSync } = require('fs');
4+
const { exit } = require('process');
45

56
const packages = JSON.parse(execSync('npx lerna ls --json').toString('utf-8'));
67

78
const firebaseAppPackageName = '@react-native-firebase/app';
8-
const firebaseAppPackageVersion = packages.find(package => package.name == firebaseAppPackageName)
9-
.version;
9+
const lernaVersion = JSON.parse(readFileSync('lerna.json')).version;
10+
console.log(`Found lerna version: ${lernaVersion}`);
1011

1112
packages.forEach(package => {
1213
if (package.name == firebaseAppPackageName) {
@@ -19,28 +20,41 @@ packages.forEach(package => {
1920
// ---------------------------
2021
const packageJsonPath = `${location}${sep}/package.json`;
2122
const packageJsonContents = JSON.parse(readFileSync(packageJsonPath).toString('utf-8'));
22-
if (!packageJsonContents.peerDependencies) {
23-
return;
24-
}
25-
if (!packageJsonContents.peerDependencies[firebaseAppPackageName]) {
26-
return;
23+
24+
// Make sure that the app package has the correct version, it has been failing periodically
25+
if (!packageJsonContents.version === lernaVersion) {
26+
console.log(
27+
`app package version ${packageJsonContents.version} but should be ${lernaVersion}? Exiting.`,
28+
);
29+
exit(1);
2730
}
28-
if (packageJsonContents.peerDependencies[firebaseAppPackageName] === firebaseAppPackageVersion) {
31+
// console.log(`Examining package ${package.name} for local peerDepencenies...`);
32+
33+
if (!packageJsonContents.peerDependencies) {
2934
return;
3035
}
3136

32-
packageJsonContents.peerDependencies[firebaseAppPackageName] = firebaseAppPackageVersion;
37+
packages.forEach(possiblePeerDependency => {
38+
// console.log(` checking for cross-dependency on ${possiblePeerDependency.name}`);
39+
if (!packageJsonContents.peerDependencies[possiblePeerDependency.name]) {
40+
return;
41+
}
42+
if (packageJsonContents.peerDependencies[possiblePeerDependency.name] === lernaVersion) {
43+
return;
44+
}
3345

34-
writeFileSync(packageJsonPath, JSON.stringify(packageJsonContents, null, 2) + '\n');
46+
packageJsonContents.peerDependencies[possiblePeerDependency.name] = lernaVersion;
3547

36-
execSync(`git add ${packageJsonPath}`);
48+
writeFileSync(packageJsonPath, JSON.stringify(packageJsonContents, null, 2) + '\n');
3749

38-
execSync(`git commit -m "build(${packageJsonContents.name.replace('@react-native-firebase/', '')}): update core peer dependency to v${firebaseAppPackageVersion} [publish]"`);
50+
execSync(`git add ${packageJsonPath}`);
3951

40-
console.log(
41-
`Updated '${firebaseAppPackageName}' peer dependency on package`,
42-
packageJsonContents.name,
43-
'to',
44-
packageJsonContents.peerDependencies[firebaseAppPackageName],
45-
);
52+
console.log(
53+
`Updated '${possiblePeerDependency.name}' peer dependency on package`,
54+
packageJsonContents.name,
55+
'to',
56+
packageJsonContents.peerDependencies[possiblePeerDependency.name],
57+
);
58+
});
4659
});
60+
execSync(`git commit -a -m "build: updated peer dependencies to v${lernaVersion} [publish]"`);

0 commit comments

Comments
 (0)