Node.js
Rilevato da package.json. npm, yarn, pnpm o bun in base al lockfile.
Guide passo passo al deploy: Node.js, Next.js, Nuxt, SvelteKit, Astro.
Vedi Buildpackper come funzionano il rilevamento e la politica delle versioni. Un repo che sembra anche un frontend statico viene compilato qui, poi il buildpack staticne serve i file.
Rilevamento
package.json nella base directory.
Versioni
La versione predefinita è Node.js 24. Versioni pubblicate (dati aggiornati a settembre 2026): 22, 24, 25, 26. Ricevi l'ultima patch della versione minor richiesta.
Per fissare la versione, in quest'ordine:
.node-version.nvmrcengines.nodeinpackage.json(un range come^22sceglie la versione pubblicata più alta compatibile)
Una v iniziale viene rimossa.
Installazione e build
Il lockfile determina il package manager: prima bun.lock o bun.lockb (oppure "packageManager": "bun@…" in package.json), poi pnpm-lock.yaml, poi yarn.lock, altrimenti npm. Il lockfile è obbligatorio (npm ci o un'installazione frozen). Senza, la build fallisce.
Se package.json ha uno script build, viene eseguito (bun run build con Bun, altrimenti npm run build). Subito dopo viene eseguito lo script heroku-postbuild, se presente. Le dipendenze di sviluppo vengono rimosse dall'immagine di runtime, tranne per le app Next.js che si avviano con un next.config.* in TypeScript (queste mantengono typescript all'avvio).
Yarn e pnpm passano da Corepack. Bun viene installato dal mirror di binari di Nodion (non da bun.sh durante la build dell'app) e resta nel PATH all'avvio, così uno script di start che chiama bun funziona. Il processo predefinito resta comunque lo script di start o node, senza essere riscritto per Bun. All'avvio viene impostato NODE_ENV=production e node_modules/.bin viene aggiunto al PATH.
Comando di avvio
Vince la prima corrispondenza:
- Lo script
startinpackage.json - Il comando predefinito di un framework SSR noto (vedi sotto)
node server.js,index.jsoapp.js, se il file esistenode .
Puoi sovrascriverlo con un Procfile. Metti l'app in ascolto su PORT.
Framework
- Next.js:
next start, a meno che non sia impostatooutput: 'export', che produce un sito statico (out/). - Nuxt:
node .output/server/index.mjs - SvelteKit: statico con
adapter-static(build/), oppurenode buildconadapter-node - Remix / React Router:
npx remix-serve ./build/server/index.js - Astro:
dist/statico, oppurenode ./dist/server/entry.mjsquando l'output èserverohybrid - Angular, Gatsby, Create React App, Eleventy, Vite: trattati come output statico
PHP + Node (Laravel con Vite) e Ruby + Node (Rails con JS) sono gruppi di buildpack per più linguaggi. Vedi PHPe Ruby.