Skip to content

Commit 71ed101

Browse files
authored
chore(0.77): update to nx 21 (#2569)
## Summary: Backport #2560
1 parent 12527f9 commit 71ed101

33 files changed

+1466
-1377
lines changed

.ado/scripts/prepublish-check.mjs

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,11 @@ const RNMACOS_LATEST = "react-native-macos@latest";
1212
const RNMACOS_NEXT = "react-native-macos@next";
1313

1414
/**
15-
* @typedef {import("nx/src/command-line/release/version").ReleaseVersionGeneratorSchema} ReleaseVersionGeneratorSchema;
15+
* @typedef {import("nx/src/config/nx-json").NxReleaseVersionConfiguration} NxReleaseVersionConfiguration;
1616
* @typedef {{
1717
* defaultBase: string;
1818
* release: {
19-
* version: {
20-
* generatorOptions: ReleaseVersionGeneratorSchema;
21-
* };
19+
* version: NxReleaseVersionConfiguration;
2220
* };
2321
* }} NxConfig;
2422
* @typedef {{
@@ -273,36 +271,36 @@ function enablePublishing(config, currentBranch, { npmTag: tag, prerelease, isNe
273271
}
274272

275273
// Determines whether we need to add "nightly" or "rc" to the version string.
276-
const { generatorOptions } = release.version;
277-
if (generatorOptions.preid !== prerelease) {
274+
const { versionActionsOptions = {} } = release.version;
275+
if (versionActionsOptions.preid !== prerelease) {
278276
if (prerelease) {
279-
errors.push(`'release.version.generatorOptions.preid' must be set to '${prerelease}'`);
280-
generatorOptions.preid = prerelease;
277+
errors.push(`'release.version.versionActionsOptions.preid' must be set to '${prerelease}'`);
278+
versionActionsOptions.preid = prerelease;
281279
} else {
282-
errors.push(`'release.version.generatorOptions.preid' must be removed`);
283-
generatorOptions.preid = undefined;
280+
errors.push(`'release.version.versionActionsOptions.preid' must be removed`);
281+
versionActionsOptions.preid = undefined;
284282
}
285283
}
286284

287285
// What the published version should be tagged as e.g., "latest" or "nightly".
288-
const { currentVersionResolverMetadata } = generatorOptions;
289-
if (currentVersionResolverMetadata?.tag !== tag) {
290-
errors.push(`'release.version.generatorOptions.currentVersionResolverMetadata.tag' must be set to '${tag}'`);
291-
generatorOptions.currentVersionResolverMetadata ??= {};
292-
generatorOptions.currentVersionResolverMetadata.tag = tag;
286+
const currentVersionResolverMetadata = /** @type {{ tag?: string }} */ (versionActionsOptions.currentVersionResolverMetadata || {});
287+
if (currentVersionResolverMetadata.tag !== tag) {
288+
errors.push(`'release.version.versionActionsOptions.currentVersionResolverMetadata.tag' must be set to '${tag}'`);
289+
versionActionsOptions.currentVersionResolverMetadata ??= {};
290+
/** @type {any} */ (versionActionsOptions.currentVersionResolverMetadata).tag = tag;
293291
}
294292

295293
// If we're demoting a branch, we will need to create a new tag. This will
296294
// make Nx trip if we don't specify a fallback. In all other scenarios, the
297295
// tags should exist and therefore prefer it to fail.
298296
if (isNewTag) {
299-
if (generatorOptions.fallbackCurrentVersionResolver !== "disk") {
300-
errors.push("'release.version.generatorOptions.fallbackCurrentVersionResolver' must be set to 'disk'");
301-
generatorOptions.fallbackCurrentVersionResolver = "disk";
297+
if (versionActionsOptions.fallbackCurrentVersionResolver !== "disk") {
298+
errors.push("'release.version.versionActionsOptions.fallbackCurrentVersionResolver' must be set to 'disk'");
299+
versionActionsOptions.fallbackCurrentVersionResolver = "disk";
302300
}
303-
} else if (typeof generatorOptions.fallbackCurrentVersionResolver === "string") {
304-
errors.push("'release.version.generatorOptions.fallbackCurrentVersionResolver' must be removed");
305-
generatorOptions.fallbackCurrentVersionResolver = undefined;
301+
} else if (typeof versionActionsOptions.fallbackCurrentVersionResolver === "string") {
302+
errors.push("'release.version.versionActionsOptions.fallbackCurrentVersionResolver' must be removed");
303+
versionActionsOptions.fallbackCurrentVersionResolver = undefined;
306304
}
307305

308306
if (errors.length > 0) {

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,4 +181,6 @@ vendor/
181181
# Nx
182182
.nx/cache
183183
.nx/workspace-data
184+
.cursor/rules/nx-rules.mdc
185+
.github/instructions/nx.instructions.md
184186
# macOS]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
react-native-macos: patch
3-
'@react-native-mac/virtualized-lists': patch
3+
'@react-native-macos/virtualized-lists': patch
44
---
55

66
new patch release

.yarn/releases/yarn-4.5.1.cjs

Lines changed: 0 additions & 934 deletions
This file was deleted.

.yarn/releases/yarn-4.9.2.cjs

Lines changed: 942 additions & 0 deletions
Large diffs are not rendered by default.

.yarnrc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
nodeLinker: node-modules
22

3-
yarnPath: .yarn/releases/yarn-4.5.1.cjs
3+
yarnPath: .yarn/releases/yarn-4.9.2.cjs

nx.json

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
"defaultBase": "0.77-stable",
44
"targetDefaults": {
55
"build": {
6-
"dependsOn": [
7-
"^build"
8-
]
6+
"dependsOn": ["^build"]
97
}
108
},
119
"release": {
@@ -16,21 +14,18 @@
1614
},
1715
"workspaceChangelog": false
1816
},
19-
"projects": [
20-
"packages/react-native",
21-
"packages/virtualized-lists"
22-
],
23-
"projectsRelationship": "independent",
17+
"projects": ["packages/react-native", "packages/virtualized-lists"],
2418
"versionPlans": true,
2519
"version": {
26-
"generator": "@react-native-mac/nx-release-version:release-version",
27-
"generatorOptions": {
20+
"versionActions": "@react-native-macos/nx-release-version",
21+
"versionActionsOptions": {
2822
"currentVersionResolver": "registry",
2923
"currentVersionResolverMetadata": {
3024
"tag": "v0.77-stable"
3125
},
3226
"fallbackCurrentVersionResolver": "disk"
33-
}
27+
},
28+
"useLegacyVersioning": false
3429
}
3530
}
3631
}

package.json

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
2-
"name": "@react-native-mac/monorepo",
2+
"name": "@react-native-macos/monorepo",
33
"private": true,
44
"version": "1000.0.0",
55
"license": "MIT",
6-
"packageManager": "yarn@4.5.0",
6+
"packageManager": "yarn@4.9.2",
77
"scripts": {
88
"android": "yarn --cwd packages/rn-tester android",
99
"build-android": "./gradlew :packages:react-native:ReactAndroid:build",
@@ -38,10 +38,8 @@
3838
"packages/*",
3939
"tools/*",
4040
"!packages/helloworld",
41-
"// [macOS",
4241
"!packages/hermes-inspector-msggen",
43-
"!packages/react-native-bots",
44-
"// macOS]"
42+
"!packages/react-native-bots"
4543
],
4644
"devDependencies": {
4745
"@babel/core": "^7.25.2",
@@ -52,7 +50,7 @@
5250
"@babel/preset-flow": "^7.24.7",
5351
"@definitelytyped/dtslint": "^0.0.127",
5452
"@jest/create-cache-key-function": "^29.6.3",
55-
"@nx/js": "~20.0.0",
53+
"@nx/js": "^21.2.4",
5654
"@react-native/metro-babel-transformer": "0.77.2",
5755
"@react-native/metro-config": "0.77.2",
5856
"@tsconfig/node18": "1.0.1",
@@ -96,7 +94,7 @@
9694
"micromatch": "^4.0.4",
9795
"node-fetch": "^2.2.0",
9896
"nullthrows": "^1.1.1",
99-
"nx": "~20.0.0",
97+
"nx": "21.2.4",
10098
"prettier": "2.8.8",
10199
"prettier-plugin-hermes-parser": "0.25.1",
102100
"react": "18.3.1",

packages/nx-release-version/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# os/nx-release-version
2+
3+
Nx (v21) Version Actions for React Native macOS releases.
4+
5+
## Overview
6+
7+
This package provides custom Version Actions for Nx 21's modern release system (`useLegacyVersioning: false`). It extends the built-in `JsVersionActions` to include React Native platform-specific artifact updates.
8+
9+
## What it does
10+
11+
When versioning the `react-native-macos` project, this package automatically:
12+
13+
1. **Updates standard package.json files** (via the base `JsVersionActions`)
14+
2. **Updates React Native platform artifacts**:
15+
- `ReactAndroid/gradle.properties`
16+
- `ReactNativeVersion.java`
17+
- `RCTVersion.m`
18+
- `ReactNativeVersion.h`
19+
- `ReactNativeVersion.js`
20+
3. **Creates a `.rnm-publish` marker file** to indicate successful versioning
21+

packages/nx-release-version/generators.json

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)