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
  • .nvmrc
  • engines.node in package.json (un range come ^22 sceglie 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:

  1. Lo script start in package.json
  2. Il comando predefinito di un framework SSR noto (vedi sotto)
  3. node server.js, index.js o app.js, se il file esiste
  4. node .

Puoi sovrascriverlo con un Procfile. Metti l'app in ascolto su PORT.

Framework

  • Next.js: next start, a meno che non sia impostato output: 'export', che produce un sito statico (out/).
  • Nuxt: node .output/server/index.mjs
  • SvelteKit: statico con adapter-static (build/), oppure node build con adapter-node
  • Remix / React Router: npx remix-serve ./build/server/index.js
  • Astro: dist/ statico, oppure node ./dist/server/entry.mjs quando l'output è server o hybrid
  • 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.

Dai al tuo agente un cloud tutto suo.

Fino a 15 € di credito quando ti registri.

Continua con GitHub

oppure con l'email

Resta aggiornato.

Novità sul prodotto, niente spam. Puoi annullare l'iscrizione quando vuoi.