Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Vendored pnpm deployments

Offen
#957 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@ivanovac arbeitet bereits daran.

Seit 12.10.2026.

  • #964 von @ivanovac — offen

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
55/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
go, node.js
Bereich
build-system

Rechercherichtung

Start in src/nodejs/supply/supply.go, especially BuildDependencies(), the PNPM interface, and the package-manager selection cases. Compare the existing NPM.Rebuild() implementation in src/nodejs/npm/npm.go; then inspect the supply tests for vendored and pnpm behavior. Done means a vendored pnpm deployment invokes pnpm rebuild rather than pnpm install.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Vendored pnpm deployments run pnpm install instead of pnpm rebuild

Summary

Since v1.9.5 pnpm is officially supported (big thanks) but pnpm projects with a pre-populated node_modules/ (vendored deployments) incorrectly run pnpm install --no-frozen-lockfile instead of pnpm rebuild.
There are two distinct bugs in BuildDependencies().


Bug 1 — case s.UsePNPM has priority over case s.IsVendored

supply.go#L342–L363

switch {
case s.UseYarn:     // L343
    s.Yarn.Build(...)
case s.UsePNPM:     // L348 ← matched first, PNPM.Build() runs
    s.PNPM.Build(...)
case s.IsVendored:  // L353 ← never reached when pnpm-lock.yaml is present
    s.NPM.Rebuild(...)
...
}

When both flags are set:

PNPM.Build() runs pnpm install, ignoring the pre-populated node_modules/.


Bug 2 — case s.IsVendored hardcodes NPM.Rebuild() regardless of package manager

Even if the ordering were fixed, case s.IsVendored at
supply.go#L353
always calls s.NPM.Rebuild(). A vendored pnpm project should call PNPM.Rebuild(),
which would also require adding Rebuild(string) error to the
PNPM interface at L51–L53
(today only Build(string, string) error exists),
mirroring npm/npm.go#L34–L51.

The same gap likely exists for Yarn vendored deployments.


Use case

We use pnpm deploy --prod to produce a flat node_modules/ layout compatible with the CF buildpack, then push the archive.
The buildpack should detect the pre-populated node_modules/ and skip the install phase, running pnpm rebuild instead to recompile any native addons for the CF stack.


How to reproduce
  1. Create a minimal pnpm workspace with a pnpm-lock.yaml and a pre-populated node_modules/.
  2. Run the buildpack supply step.
  3. Expected: pnpm rebuild is called.
  4. Actual: pnpm install --no-frozen-lockfile is called.
Vorherrschende Sprache
Go
Sterne
173
Forks
389
Ø Merge
2 T. 14 Std.
Gemergte PRs (30 T.)
12

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus cloudfoundry/nodejs-buildpack

Alle Issues in cloudfoundry/nodejs-buildpack

Ähnliche Issues

Weitere Issues zu Go

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.