Skip to content

Upgrade to node 26 - #60

Open
tbunata wants to merge 7 commits into
mainfrom
feat/59-node-26
Open

Upgrade to node 26#60
tbunata wants to merge 7 commits into
mainfrom
feat/59-node-26

Conversation

@tbunata

@tbunata tbunata commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

PR addresses:

  • Upgrade to node 26
  • Use pnpm 11 installed from binary (node 26 doesn't ship corepack)

Fixes #59

@tbunata
tbunata requested a review from pavelsvagr July 22, 2026 11:33
tbunata added 7 commits July 22, 2026 14:04
Bump the scaffolded app to Node 26.5.0 and pnpm 11.15.1. pnpm 11 is
required because pnpm 10 uses the deprecated `pnpm audit` endpoints,
and since Node 26 no longer bundles corepack, install pnpm via the
official standalone script (https://pnpm.io/installation) instead of
the single-binary download, which pnpm dropped at v11.

Add pnpm-workspace.yaml allowing esbuild's build script. pnpm blocks
dependency build scripts by default and fails the install otherwise,
which would break `pnpm install` in the Dockerfile and the
generate:api prebuild (tsx relies on esbuild).

Related: #59
Move create-node-app's own package manager to pnpm 11.15.1 (pnpm 10
uses the deprecated `pnpm audit` endpoints) and add Node 26 to the
build matrix. The tool's supported Node range (engines >=20.19.0) is
left unchanged.

Related: #59
With incremental TypeScript, a stale tsconfig.tsbuildinfo copied into
the image makes tsc skip emit, leaving dist empty so the container
crashes with "Cannot find module '/usr/src/app/dist/index.js'". dist
is already ignored, so its build-info file must be too.

Related: #59
The legacy `ENV key value` form for DOCKERIZE_VERSION and TINI_VERSION
triggers a LegacyKeyValueFormat warning on modern Docker/BuildKit.
Switch to the `key=value` form; the values are unchanged.

Related: #59
pnpm 11.15.1 crashes on Node 20 (it needs the node:sqlite builtin,
available since Node 22.13), which broke the CI build matrix. Remove
20 from the matrix, raise engines.node to >=22.13.0, and bump
@types/node to ^22 to match. Node 20 is EOL anyway.

Related: #59
pnpm 11's `pnpm link --global` fails on the CI runner with "global bin
directory is not in PATH", breaking the create-projects workflow. Run
the built CLI directly with node instead of globally linking it.

Related: #59
pnpm 11 blocks its build script and fails the install, which breaks
the GraphQL starter's scaffold (@apollo/protobufjs is pulled in by
@apollo/server). Add it to allowBuilds. pnpm-workspace.yaml is not
merged across starter layers, so all starters' build allowances live
in the base allowlist; entries for packages a project doesn't install
are ignored.

Related: #59
@tbunata
tbunata requested review from hofp37 and removed request for pavelsvagr July 22, 2026 12:18
@tbunata tbunata self-assigned this Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ Upgrade to node 26

1 participant