Skip to main content
Wersje robocze kodu źródłowego OpenClaw używają pliku pnpm-lock.yaml. Opublikowane pakiety npm OpenClaw używają pliku npm-shrinkwrap.json, czyli przeznaczonego do publikacji pliku blokady zależności npm, dzięki czemu instalacje pakietów korzystają z grafu zależności sprawdzonego podczas wydania.

Dlaczego to ważne

Shrinkwrap jest potwierdzeniem drzewa zależności dostarczanego z pakietem npm: wskazuje npm, które dokładne wersje zależności przechodnich należy zainstalować. W przypadku wydań OpenClaw oznacza to, że:
  • opublikowany pakiet nie wymaga od npm tworzenia nowego grafu zależności podczas instalacji;
  • zmiany zależności można przeglądać, ponieważ trafiają do różnic w pliku blokady;
  • podczas weryfikacji wydania testowany jest ten sam graf, który zainstalują użytkownicy;
  • niespodziewane zmiany rozmiaru pakietu lub zależności natywnych ujawniają się przed publikacją.
Shrinkwrap nie jest piaskownicą. Sam w sobie nie zapewnia bezpieczeństwa zależności i nie zastępuje izolacji hosta, polecenia openclaw security audit, pochodzenia pakietów ani testów dymnych instalacji. OpenClaw pełni funkcję Gateway, hosta pluginów, routera modeli i środowiska uruchomieniowego agentów, dlatego domyślna instalacja wpływa na czas uruchamiania, wykorzystanie miejsca na dysku, pobieranie pakietów natywnych i narażenie łańcucha dostaw. Shrinkwrap zapewnia stabilną granicę podczas przeglądu wydania: recenzenci widzą zmiany zależności przechodnich, walidatory odrzucają nieoczekiwane rozbieżności pliku blokady, a pakiety pluginów zawierają własny zablokowany graf zależności zamiast polegać na pakiecie głównym.

Generowanie i sprawdzanie

Główny pakiet npm openclaw, należące do OpenClaw pakiety pluginów npm (na przykład @openclaw/discord) oraz przeznaczone do publikacji pakiety obszaru roboczego, takie jak @openclaw/ai, podczas publikacji zawierają plik npm-shrinkwrap.json. Zależności obszaru roboczego są pomijane w głównym pliku shrinkwrap, ponieważ są publikowane razem z pakietem głównym; zamiast tego każdy przeznaczony do publikacji pakiet obszaru roboczego przypina własne drzewo zależności przechodnich. Odpowiednie pakiety pluginów mogą być również publikowane z jawną konfiguracją bundledDependencies, która umieszcza pliki zależności środowiska uruchomieniowego w archiwum pluginu, zamiast polegać wyłącznie na rozwiązywaniu zależności podczas instalacji.
Generator rozwiązuje przeznaczony do publikacji format blokady npm, ale odrzuca wygenerowane wersje pakietów, których nie ma już w pliku pnpm-lock.yaml. Pozwala to zachować granicę przeglądu wieku zależności pnpm, nadpisań i poprawek. Następujące elementy należy przeglądać jako istotne dla bezpieczeństwa:
  • pnpm-lock.yaml
  • npm-shrinkwrap.json
  • dołączone zestawy zależności pluginów
  • wszelkie różnice w pliku package-lock.json
Walidatory pakietów OpenClaw wymagają pliku shrinkwrap w nowych archiwach głównego pakietu i odrzucają plik package-lock.json w publikowanych pakietach. Ścieżka publikowania pluginów w npm sprawdza lokalny dla pluginu plik shrinkwrap, instaluje dołączone zależności lokalne dla pakietu, a następnie pakuje lub publikuje pakiet.

Sprawdzanie opublikowanego pakietu

Pakiet główny:
Pakiet pluginu:
Informacje dodatkowe: npm-shrinkwrap.json.