Skip to main content
OpenClaw-Quell-Checkouts verwenden pnpm-lock.yaml. Veröffentlichte OpenClaw-npm-Pakete verwenden npm-shrinkwrap.json, die veröffentlichbare Abhängigkeitssperrdatei von npm, sodass Paketinstallationen den während des Releases geprüften Abhängigkeitsgraphen verwenden.

Warum dies wichtig ist

Shrinkwrap ist ein Beleg für den Abhängigkeitsbaum, der mit einem npm-Paket ausgeliefert wird: Es teilt npm mit, welche exakten transitiven Versionen installiert werden sollen. Für OpenClaw-Releases bedeutet dies:
  • das veröffentlichte Paket fordert npm nicht dazu auf, bei der Installation einen neuen Abhängigkeitsgraphen zu erzeugen;
  • Abhängigkeitsänderungen sind überprüfbar, da sie in einem Lockfile-Diff eingehen;
  • die Release-Validierung testet denselben Graphen, den Benutzer installieren werden;
  • Überraschungen bei der Paketgröße oder nativen Abhängigkeiten werden vor der Veröffentlichung sichtbar.
Shrinkwrap ist keine Sandbox. Es macht eine Abhängigkeit nicht von sich aus sicher und ersetzt weder die Host-Isolierung, openclaw security audit, die Paketherkunft noch Installations-Smoke-Tests. OpenClaw ist ein Gateway, Plugin-Host, Modell-Router und eine Agentenlaufzeit, daher wirkt sich eine Standardinstallation auf Startzeit, Speicherplatzbedarf, Downloads nativer Pakete und die Gefährdung durch die Lieferkette aus. Shrinkwrap bietet der Release-Prüfung eine stabile Grenze: Prüfer sehen Änderungen an transitiven Abhängigkeiten, Validatoren lehnen unerwartete Abweichungen der Sperrdatei ab und Plugin-Pakete führen ihren eigenen gesperrten Abhängigkeitsgraphen mit, statt sich auf das Root-Paket zu verlassen.

Generieren und prüfen

Das Root-npm-Paket openclaw, OpenClaw-eigene npm-Plugin-Pakete (zum Beispiel @openclaw/discord) und veröffentlichbare Workspace-Pakete wie @openclaw/ai enthalten bei der Veröffentlichung npm-shrinkwrap.json. Workspace-Abhängigkeiten werden im Root-Shrinkwrap ausgelassen, da sie zusammen mit dem Root-Paket veröffentlicht werden; stattdessen fixiert jedes veröffentlichbare Workspace-Paket seinen eigenen transitiven Baum. Geeignete Plugin-Pakete können außerdem mit explizitem bundledDependencies veröffentlicht werden, wobei ihre Laufzeitabhängigkeitsdateien im Plugin-Tarball enthalten sind, statt sich ausschließlich auf die Auflösung während der Installation zu verlassen.
Der Generator löst das veröffentlichbare Sperrformat von npm auf, lehnt jedoch generierte Paketversionen ab, die nicht bereits in pnpm-lock.yaml vorhanden sind. Dadurch bleibt die Prüfgrenze für Alter, Überschreibungen und Patches der pnpm-Abhängigkeiten erhalten. Prüfen Sie Folgendes als sicherheitskritisch:
  • pnpm-lock.yaml
  • npm-shrinkwrap.json
  • Abhängigkeitsinhalte gebündelter Plugins
  • jeden package-lock.json-Diff
OpenClaw-Paketvalidatoren verlangen Shrinkwrap in neuen Root-Paket-Tarballs und lehnen package-lock.json für veröffentlichte Pakete ab. Der npm-Veröffentlichungspfad für Plugins prüft das Plugin-lokale Shrinkwrap, installiert paketlokale gebündelte Abhängigkeiten und packt oder veröffentlicht anschließend das Paket.

Ein veröffentlichtes Paket untersuchen

Root-Paket:
Plugin-Paket:
Hintergrund: npm-shrinkwrap.json.