diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f2953f73fa0..bf4735f0744 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,8 +21,11 @@ jobs: - NodeVersion: 22.19.x NodeVersionDisplayName: 22 OS: ubuntu-latest - - NodeVersion: 22.19.x - NodeVersionDisplayName: 22 + - NodeVersion: 24.11.x + NodeVersionDisplayName: 24 + OS: ubuntu-latest + - NodeVersion: 24.11.x + NodeVersionDisplayName: 24 OS: windows-latest name: Node.js v${{ matrix.NodeVersionDisplayName }} (${{ matrix.OS }}) runs-on: ${{ matrix.OS }} diff --git a/build-tests/api-documenter-test/etc/api-documenter-test.api.json b/build-tests/api-documenter-test/etc/api-documenter-test.api.json index 8c18b181cfa..a84567c2040 100644 --- a/build-tests/api-documenter-test/etc/api-documenter-test.api.json +++ b/build-tests/api-documenter-test/etc/api-documenter-test.api.json @@ -114,6 +114,22 @@ "tagName": "@virtual", "syntaxKind": "modifier" }, + { + "tagName": "@jsx", + "syntaxKind": "block" + }, + { + "tagName": "@jsxRuntime", + "syntaxKind": "block" + }, + { + "tagName": "@jsxFrag", + "syntaxKind": "block" + }, + { + "tagName": "@jsxImportSource", + "syntaxKind": "block" + }, { "tagName": "@betaDocumentation", "syntaxKind": "modifier" diff --git a/build-tests/api-extractor-test-05/dist/tsdoc-metadata.json b/build-tests/api-extractor-test-05/dist/tsdoc-metadata.json index 7690bff4320..74e45be236b 100644 --- a/build-tests/api-extractor-test-05/dist/tsdoc-metadata.json +++ b/build-tests/api-extractor-test-05/dist/tsdoc-metadata.json @@ -5,7 +5,7 @@ "toolPackages": [ { "packageName": "@microsoft/api-extractor", - "packageVersion": "7.54.0" + "packageVersion": "7.55.2" } ] } diff --git a/common/changes/@microsoft/rush/node-24_2025-12-07-09-31.json b/common/changes/@microsoft/rush/node-24_2025-12-07-09-31.json new file mode 100644 index 00000000000..396ccd93f1b --- /dev/null +++ b/common/changes/@microsoft/rush/node-24_2025-12-07-09-31.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Add support for Node 24 and bump the `rush init` template to default to Node 24.", + "type": "none" + } + ], + "packageName": "@microsoft/rush" +} \ No newline at end of file diff --git a/common/changes/@microsoft/rush/remove-rush-shell_2025-12-11-08-20.json b/common/changes/@microsoft/rush/remove-rush-shell_2025-12-11-08-20.json new file mode 100644 index 00000000000..93852768a84 --- /dev/null +++ b/common/changes/@microsoft/rush/remove-rush-shell_2025-12-11-08-20.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@microsoft/rush", + "comment": "Remove use of the deprecated `shell: true` option in process spawn operations.", + "type": "none" + } + ], + "packageName": "@microsoft/rush" +} \ No newline at end of file diff --git a/common/config/azure-pipelines/templates/install-node.yaml b/common/config/azure-pipelines/templates/install-node.yaml index 9983a8a311e..c7c64960719 100644 --- a/common/config/azure-pipelines/templates/install-node.yaml +++ b/common/config/azure-pipelines/templates/install-node.yaml @@ -1,7 +1,7 @@ parameters: - name: NodeMajorVersion type: number - default: 20 + default: 22 steps: - task: NodeTool@0 diff --git a/libraries/rush-lib/assets/rush-init/rush.json b/libraries/rush-lib/assets/rush-init/rush.json index 20d52ad9f60..a972877f6d0 100644 --- a/libraries/rush-lib/assets/rush-init/rush.json +++ b/libraries/rush-lib/assets/rush-init/rush.json @@ -42,7 +42,7 @@ * LTS schedule: https://nodejs.org/en/about/releases/ * LTS versions: https://nodejs.org/en/download/releases/ */ - "nodeSupportedVersionRange": ">=22.20.0 <23.0.0", + "nodeSupportedVersionRange": ">=24.11.1 <25.0.0", /** * If the version check above fails, Rush will display a message showing the current diff --git a/libraries/rush-lib/src/logic/NodeJsCompatibility.ts b/libraries/rush-lib/src/logic/NodeJsCompatibility.ts index ea760937f3e..e9cdbddc7cd 100644 --- a/libraries/rush-lib/src/logic/NodeJsCompatibility.ts +++ b/libraries/rush-lib/src/logic/NodeJsCompatibility.ts @@ -17,7 +17,7 @@ import { RushConstants } from './RushConstants'; * LTS schedule: https://nodejs.org/en/about/releases/ * LTS versions: https://nodejs.org/en/download/releases/ */ -const UPCOMING_NODE_LTS_VERSION: number = 22; +const UPCOMING_NODE_LTS_VERSION: number = 24; const nodeVersion: string = process.versions.node; const nodeMajorVersion: number = semver.major(nodeVersion); diff --git a/libraries/rush-lib/src/scripts/install-run.ts b/libraries/rush-lib/src/scripts/install-run.ts index 03b15d8567c..d8616cb19fd 100644 --- a/libraries/rush-lib/src/scripts/install-run.ts +++ b/libraries/rush-lib/src/scripts/install-run.ts @@ -197,8 +197,7 @@ function _resolvePackageVersion( const spawnSyncOptions: childProcess.SpawnSyncOptions = { cwd: rushTempFolder, - stdio: [], - shell: _isWindows() + stdio: [] }; const platformNpmPath: string = _getPlatformPath(npmPath); const npmVersionSpawnResult: childProcess.SpawnSyncReturns = childProcess.spawnSync( @@ -365,8 +364,7 @@ function _installPackage( const result: childProcess.SpawnSyncReturns = childProcess.spawnSync(platformNpmPath, [command], { stdio: 'inherit', cwd: packageInstallFolder, - env: process.env, - shell: _isWindows() + env: process.env }); if (result.status !== 0) { @@ -466,7 +464,6 @@ export function installAndRun( result = childProcess.spawnSync(platformBinPath, packageBinArgs, { stdio: 'inherit', windowsVerbatimArguments: false, - shell: _isWindows(), cwd: process.cwd(), env: process.env }); diff --git a/libraries/rush-lib/src/utilities/Utilities.ts b/libraries/rush-lib/src/utilities/Utilities.ts index f339fdb5ce9..806d15d23af 100644 --- a/libraries/rush-lib/src/utilities/Utilities.ts +++ b/libraries/rush-lib/src/utilities/Utilities.ts @@ -645,11 +645,9 @@ export class Utilities { ): TCommandResult { let shellCommand: string = process.env.comspec || 'cmd'; let commandFlags: string = '/d /s /c'; - let useShell: boolean = true; if (process.platform !== 'win32') { shellCommand = 'sh'; commandFlags = '-c'; - useShell = false; } const environment: IEnvironment = Utilities._createEnvironmentForRushCommand({ @@ -670,7 +668,6 @@ export class Utilities { const spawnOptions: child_process.SpawnOptions = { cwd: options.workingDirectory, - shell: useShell, env: environment, stdio }; @@ -810,7 +807,6 @@ export class Utilities { }: IExecuteCommandInternalOptions): Promise | IWaitForExitResultWithoutOutput> { const options: child_process.SpawnSyncOptions = { cwd: workingDirectory, - shell: true, stdio: stdio, env: keepEnvironment ? environment diff --git a/rush.json b/rush.json index c66a3135481..38d3bfac7fe 100644 --- a/rush.json +++ b/rush.json @@ -42,7 +42,7 @@ * LTS schedule: https://nodejs.org/en/about/releases/ * LTS versions: https://nodejs.org/en/download/releases/ */ - "nodeSupportedVersionRange": ">=18.15.0 <19.0.0 || >=20.9.0 <21.0.0 || >=22.12.0 <23.0.0", + "nodeSupportedVersionRange": ">=18.15.0 <19.0.0 || >=20.9.0 <21.0.0 || >=22.12.0 <23.0.0 || >=24.11.1 <25.0.0", /** * If the version check above fails, Rush will display a message showing the current