Node.js
Wykrywany na podstawie package.json. npm, yarn, pnpm lub bun według pliku lockfile.
Przewodniki wdrożeniowe krok po kroku: Node.js, Next.js, Nuxt, SvelteKit, Astro.
Na stronie Buildpacksopisano wykrywanie i zasady doboru wersji. Jeśli repozytorium zawiera też statyczny frontend, ten buildpack go buduje, a następnie buildpack staticserwuje jego pliki.
Wykrywanie
package.json w Base directory.
Wersje
Domyślnie używany jest Node.js 24. Linie wydań dostępne we wrześniu 2026: 22, 24, 25, 26. Otrzymasz najnowszą wersję poprawkową wybranej wersji minor.
Przypinanie wersji, w tej kolejności:
.node-version.nvmrcengines.nodewpackage.json(zakres taki jak^22wybiera najwyższą pasującą opublikowaną wersję)
Początkowe v jest usuwane.
Instalacja i build
Lockfile decyduje o menedżerze pakietów: najpierw bun.lock lub bun.lockb (albo "packageManager": "bun@…" w package.json), potem pnpm-lock.yaml, potem yarn.lock, a w pozostałych przypadkach npm. Lockfile jest wymagany (npm ci lub instalacja frozen). Bez niego build się nie powiedzie.
Jeśli package.json ma skrypt build, zostanie on uruchomiony (bun run build dla Bun, w pozostałych przypadkach npm run build). Następnie uruchamiany jest skrypt heroku-postbuild, jeśli istnieje. Zależności deweloperskie (dev dependencies) są usuwane z obrazu uruchomieniowego (run image), z wyjątkiem aplikacji Next.js, które startują z next.config.* w TypeScript (te zachowują typescript przy uruchomieniu).
Yarn i pnpm działają przez Corepack. Bun jest instalowany z mirrora binariów Nodion (nie z bun.sh w czasie buildu aplikacji) i pozostaje w PATH przy uruchomieniu, więc skrypt startowy wywołujący bun działa. Domyślnym procesem nadal jest skrypt startowy lub node, bez przepisywania na Bun. Przy uruchomieniu ustawiane jest NODE_ENV=production, a node_modules/.bin trafia do PATH.
Polecenie startowe
Stosowane jest pierwsze pasujące polecenie:
- Skrypt
startwpackage.json - Domyślne polecenie znanego frameworka SSR (zobacz niżej)
node server.js,index.jslubapp.js, jeśli taki plik istniejenode .
Możesz je nadpisać w Procfile. Twoja aplikacja musi nasłuchiwać na PORT.
Frameworki
- Next.js:
next start, chyba że ustawionooutput: 'export', co daje stronę statyczną (out/). - Nuxt:
node .output/server/index.mjs - SvelteKit: statycznie z
adapter-static(build/) lubnode buildzadapter-node - Remix / React Router:
npx remix-serve ./build/server/index.js - Astro: statyczny
dist/lubnode ./dist/server/entry.mjs, gdy output toserverlubhybrid - Angular, Gatsby, Create React App, Eleventy, Vite: traktowane jako strony statyczne
PHP + Node (Laravel z Vite) i Ruby + Node (Rails z JS) to grupy wielojęzyczne (polyglot). Zobacz PHPi Ruby.