Skip to content

Commit 5348ba6

Browse files
authored
chore(0.76): update to nx 21 (#2570)
## Summary: Backport #2560
1 parent eec1968 commit 5348ba6

33 files changed

+1492
-1439
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
@@ -178,4 +178,6 @@ vendor/
178178
# Nx
179179
.nx/cache
180180
.nx/workspace-data
181+
.cursor/rules/nx-rules.mdc
182+
.github/instructions/nx.instructions.md
181183
# macOS]
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
---
22
react-native-macos: patch
3-
'@react-native-mac/virtualized-lists': patch
43
---
54

65
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.76-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.76-stable"
3125
},
3226
"fallbackCurrentVersionResolver": "disk"
33-
}
27+
},
28+
"useLegacyVersioning": false
3429
}
3530
}
3631
}

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +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": "[email protected]",
67
"scripts": {
78
"android": "cd packages/rn-tester && npm run android",
89
"build-android": "./gradlew :packages:react-native:ReactAndroid:build",
@@ -48,7 +49,7 @@
4849
"@babel/preset-flow": "^7.24.7",
4950
"@definitelytyped/dtslint": "^0.0.127",
5051
"@jest/create-cache-key-function": "^29.6.3",
51-
"@nx/js": "~20.0.0",
52+
"@nx/js": "^21.2.4",
5253
"@pkgjs/parseargs": "^0.11.0",
5354
"@react-native/metro-babel-transformer": "0.76.9",
5455
"@react-native/metro-config": "0.76.9",
@@ -93,7 +94,7 @@
9394
"mkdirp": "^0.5.1",
9495
"node-fetch": "^2.2.0",
9596
"nullthrows": "^1.1.1",
96-
"nx": "~20.0.0",
97+
"nx": "21.2.4",
9798
"prettier": "2.8.8",
9899
"prettier-plugin-hermes-parser": "0.23.1",
99100
"react": "18.3.1",
@@ -124,6 +125,5 @@
124125
"readable-stream": "Eliminates dependency on outdated string_decoder component",
125126
"shell-quote": "Versions prior to 1.7.3 have an RCE vulnerability. Should be removable once we upgrade CLI tools to ^8.0.0 with RN 0.69.",
126127
"tough-cookie": "@definitelytyped/dtslint indirectly depends on this through an out-of-date library, and our particular use case doesn't need cookies"
127-
},
128-
"packageManager": "[email protected]"
128+
}
129129
}

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)