From 36c9144629d4376e0cae973db568dd5fec0cd0f1 Mon Sep 17 00:00:00 2001 From: aamoghS Date: Thu, 24 Sep 2026 21:26:04 -0400 Subject: [PATCH] chore: move runtime and tooling to Node 22 Several dependencies no longer support Node 20: @google-cloud/storage 8 (and its @google-cloud/* deps) and sanitize-html 2.17 need >=22, vitest 5 needs ^22.12, and eslint 10 needs ^22.13. App Hosting still ran nodejs20, which is also end of life (April 2026). - apphosting.yaml: runtime nodejs22. - engines: >=22.13.0 <24, the lowest version every installed package accepts. - .nvmrc and codeql.yml move to 22, matching the other workflows. - Docs updated to match. --- .github/workflows/codeql.yml | 2 +- .nvmrc | 2 +- apphosting.yaml | 2 +- docs/operations/ci-cd.md | 2 +- docs/operations/deployment.md | 2 +- docs/tooling.md | 2 +- package.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d90513f9..d5f6a69a 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -43,7 +43,7 @@ jobs: - name: Setup Node uses: actions/setup-node@v6 with: - node-version: "20" + node-version: "22" cache: "pnpm" - name: Install dependencies diff --git a/.nvmrc b/.nvmrc index 209e3ef4..2bd5a0a9 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20 +22 diff --git a/apphosting.yaml b/apphosting.yaml index ddea6f75..b17ae048 100644 --- a/apphosting.yaml +++ b/apphosting.yaml @@ -10,7 +10,7 @@ scripts: runCommand: node sites/mainweb/.next/standalone/sites/mainweb/server.js runConfig: - runtime: nodejs20 + runtime: nodejs22 concurrency: 80 cpu: 2 memoryMiB: 1024 diff --git a/docs/operations/ci-cd.md b/docs/operations/ci-cd.md index 058bad26..2377051d 100644 --- a/docs/operations/ci-cd.md +++ b/docs/operations/ci-cd.md @@ -7,7 +7,7 @@ All workflows live in `.github/workflows/`. | Workflow | Trigger | What it does | | --- | --- | --- | | `pnpm-ci.yml` | Push `main`/`dev`, PRs | `pnpm install` + `pnpm turbo run build` (Node 22) | -| `test.yml` | Push `main`/`dev`, PRs | `pnpm test` (Node 20; pnpm comes from `packageManager`, unpinned in the workflow so it cannot drift) | +| `test.yml` | Push `main`/`dev`, PRs | `pnpm test` (Node 22; pnpm comes from `packageManager`, unpinned in the workflow so it cannot drift) | | `codeql.yml` | Push/PR `main`/`dev`, daily 02:00 UTC | CodeQL `security-extended,security-and-quality`; PRs also run dependency review (`fail-on-severity: high`) | ## Deploy diff --git a/docs/operations/deployment.md b/docs/operations/deployment.md index 13e7abe6..394c2063 100644 --- a/docs/operations/deployment.md +++ b/docs/operations/deployment.md @@ -9,7 +9,7 @@ Config: [`apphosting.yaml`](../../apphosting.yaml) at the repo root. | | | | --- | --- | | App | `sites/mainweb` (workspace `web`) | -| Runtime | Node 20 | +| Runtime | Node 22 | | Output | Next standalone (`sites/mainweb/.next/standalone/sites/mainweb/server.js`) | | Concurrency | 80 | | CPU / memory | 2 / 1024 MiB | diff --git a/docs/tooling.md b/docs/tooling.md index e648a3b8..426d7a23 100644 --- a/docs/tooling.md +++ b/docs/tooling.md @@ -23,7 +23,7 @@ Root `turbo.json` defines `build`, `dev`, `lint`, `typecheck`, `test`, `format`, | File | Role | | --- | --- | -| `.nvmrc` | Node 20 | +| `.nvmrc` | Node 22 | | `pnpm-workspace.yaml` | Workspace globs, plus every pnpm setting: `overrides` (security pins), `allowBuilds`, `autoInstallPeers`, `publicHoistPattern` (hoists eslint/prettier), `frozenLockfile`. pnpm 12 reads settings only from here — not `.npmrc`, not `package.json`'s `pnpm` field | | `restore-workspace.js` | Rewrite internal deps from `"*"` back to `workspace:*` | | `.dockerignore` | Slim Docker context (docs, git, env files, `node_modules`) | diff --git a/package.json b/package.json index a69e48ec..b6912c0e 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "1.0.0", "packageManager": "pnpm@10.33.2", "engines": { - "node": ">=20.16.0 <24" + "node": ">=22.13.0 <24" }, "scripts": { "dev": "turbo run dev --parallel",