Node.js
Herkend aan package.json. npm, yarn, pnpm of bun op basis van de lockfile.
Stapsgewijze deployhandleidingen: Node.js, Next.js, Nuxt, SvelteKit, Astro.
Zie Buildpacksvoor hoe detectie en het versiebeleid werken. Een repository die ook als statische frontend wordt herkend, wordt hiermee gebouwd en daarna uitgeleverd door het staticbuildpack.
Detectie
package.json in de Base directory.
Versies
Standaard is Node.js 24. Gepubliceerde versielijnen per september 2026: 22, 24, 25, 26. Je krijgt de nieuwste patchversie binnen de gevraagde minorversie.
Vastzetten, in deze volgorde:
.node-version.nvmrcengines.nodeinpackage.json(een range zoals^22kiest de hoogste gepubliceerde versie die past)
Een v aan het begin wordt verwijderd.
Installatie en build
De lockfile bepaalt welke package manager wordt gebruikt: eerst bun.lock of bun.lockb (of "packageManager": "bun@…" in package.json), dan pnpm-lock.yaml, dan yarn.lock, anders npm. Een lockfile is verplicht (npm ci of een frozen install). Zonder lockfile mislukt de build.
Heeft package.json een build-script, dan draait dat (bun run build voor Bun, anders npm run build). Daarna draait een heroku-postbuild-script, als dat er is. Dev-dependencies worden voor de run-image verwijderd, behalve bij Next.js-apps die starten met een TypeScript-next.config.* (die houden TypeScript bij het starten).
Yarn en pnpm lopen via Corepack. Bun wordt geïnstalleerd vanaf de binaire mirror van Nodion (niet vanaf bun.sh tijdens de app-build) en blijft bij de start op PATH staan, zodat een startscript dat bun aanroept werkt. Het standaardproces blijft het startscript of node; Nodion herschrijft het niet naar Bun. Bij het starten wordt NODE_ENV=production gezet en komt node_modules/.bin op PATH.
Startcommando
De eerste match wint:
- Het
start-script inpackage.json - De standaard van een bekend SSR-framework (zie hieronder)
node server.js,index.jsofapp.js, als dat bestand bestaatnode .
Overschrijf het met een Procfile. Je app moet luisteren op PORT.
Frameworks
- Next.js:
next start, behalve bijoutput: 'export', dat een statische site oplevert (out/). - Nuxt:
node .output/server/index.mjs - SvelteKit: statisch met
adapter-static(build/), ofnode buildmetadapter-node - Remix / React Router:
npx remix-serve ./build/server/index.js - Astro: statische
dist/, ofnode ./dist/server/entry.mjsals de outputserverofhybridis - Angular, Gatsby, Create React App, Eleventy, Vite: behandeld als statische output
PHP + Node (Laravel met Vite) en Ruby + Node (Rails met JS) zijn polyglot-groepen. Zie PHPen Ruby.