feat: update Node.js version to 22 and adjust electron-rebuild dependency handling

This commit is contained in:
Sparsh 2026-04-27 15:28:18 +05:30
parent 030fe7d22d
commit 7ee45d6396
3 changed files with 39 additions and 4 deletions

View file

@ -24,7 +24,7 @@ jobs:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 20
node-version: 22
cache: npm
cache-dependency-path: gitnexus-desktop/package-lock.json
@ -78,7 +78,7 @@ jobs:
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: 20
node-version: 22
cache: npm
cache-dependency-path: |
gitnexus-shared/package-lock.json
@ -112,6 +112,29 @@ jobs:
env:
CSC_IDENTITY_AUTO_DISCOVERY: 'false'
- name: Inspect rebuilt native modules (Windows)
if: matrix.os == 'windows-latest'
shell: pwsh
run: |
$releaseDir = Get-ChildItem gitnexus-desktop/release -Directory | Sort-Object LastWriteTime -Descending | Select-Object -First 1
if (-not $releaseDir) {
Write-Host "No release directory found."
exit 0
}
$runtimeNodeModules = Join-Path $releaseDir.FullName 'win-unpacked\resources\gitnexus\node_modules'
Write-Host "Inspecting native modules under $runtimeNodeModules"
if (-not (Test-Path $runtimeNodeModules)) {
Write-Host "Runtime node_modules directory not found."
exit 0
}
Get-ChildItem $runtimeNodeModules -Recurse -Filter '*.node' |
Select-Object FullName, LastWriteTime |
Format-Table -AutoSize
- name: Start Xvfb
if: matrix.os == 'ubuntu-latest'
run: |

View file

@ -160,6 +160,7 @@ const gitnexusDesktopRuntimeDependencyNames = [
'graphology-utils',
'ignore',
'js-yaml',
'jsonc-parser',
'lru-cache',
'mnemonist',
'pandemonium',

View file

@ -28,8 +28,19 @@ const electronVersion =
desktopPackageJson.devDependencies?.electron?.replace(/^[^\d]*/, '') ?? '41.2.1';
const electronBuilderVersion =
desktopPackageJson.devDependencies?.['electron-builder']?.replace(/^[^\d]*/, '') ?? '26.8.1';
// electron-rebuild v4 requires Node 22+, but desktop packaging currently runs on Node 20.
const electronRebuildVersion = '3.7.2';
const [nodeMajorVersion = 0, nodeMinorVersion = 0] = process.versions.node
.split('.')
.map((segment) => Number.parseInt(segment, 10));
const supportsElectronRebuildV4 =
nodeMajorVersion > 22 || (nodeMajorVersion === 22 && nodeMinorVersion >= 12);
// electron-rebuild v4 requires Node >= 22.12. Keep a v3 fallback for local Node 20 usage.
const electronRebuildVersion = supportsElectronRebuildV4 ? '4.0.3' : '3.7.2';
if (!supportsElectronRebuildV4) {
console.warn(
`[build] Node ${process.versions.node} detected; using electron-rebuild@${electronRebuildVersion}. Node 22.12+ is recommended for Electron ${electronVersion}.`,
);
}
const electronBuilderCliPath = path.join(packageRoot, 'node_modules', 'electron-builder', 'cli.js');
const builderUtilRequire = createRequire(
path.join(packageRoot, 'node_modules', 'builder-util', 'out', 'util.js'),