Gateway

npm shrinkwrap

OpenClaw kaynak çalışma kopyaları pnpm-lock.yaml kullanır. Yayımlanan OpenClaw npm paketleri, paket kurulumlarının sürüm sırasında incelenen bağımlılık grafiğini kullanması için npm'in yayımlanabilir bağımlılık kilit dosyası olan npm-shrinkwrap.json dosyasını kullanır.

Neden önemlidir?

Shrinkwrap, bir npm paketiyle gönderilen bağımlılık ağacının kaydıdır: npm'e tam olarak hangi geçişli sürümlerin kurulacağını bildirir.

Dosya Önemli olduğu yer Anlamı
pnpm-lock.yaml OpenClaw kaynak çalışma kopyası Bakımcı bağımlılık grafiği
npm-shrinkwrap.json Yayımlanmış npm paketi Kullanıcılar için npm kurulum grafiği
package-lock.json Yerel npm uygulamaları OpenClaw yayımlama sözleşmesi değildir

OpenClaw sürümleri açısından bunun anlamı şudur:

  • yayımlanan paket, npm'den kurulum sırasında yeni bir bağımlılık grafiği oluşturmasını istemez;
  • bağımlılık değişiklikleri bir kilit dosyası farkı içinde yer aldığından incelenebilir;
  • sürüm doğrulaması, kullanıcıların kuracağı grafiğin aynısını test eder;
  • paket boyutuyla veya yerel bağımlılıklarla ilgili beklenmedik durumlar yayımlamadan önce ortaya çıkar.

Shrinkwrap bir korumalı alan değildir. Tek başına bir bağımlılığı güvenli hâle getirmez ve ana makine yalıtımının, openclaw security audit komutunun, paket kaynağı doğrulamasının veya kurulum duman testlerinin yerini almaz.

OpenClaw bir Gateway, Plugin barındırıcısı, model yönlendiricisi ve ajan çalışma zamanıdır; bu nedenle varsayılan bir kurulum başlatma süresini, disk kullanımını, yerel paket indirmelerini ve tedarik zinciri risklerini etkiler. Shrinkwrap, sürüm incelemesine istikrarlı bir sınır sağlar: inceleyenler geçişli bağımlılık hareketlerini görür, doğrulayıcılar beklenmeyen kilit dosyası sapmalarını reddeder ve Plugin paketleri kök pakete güvenmek yerine kendi kilitlenmiş bağımlılık grafiklerini taşır.

Oluşturma ve denetleme

Kök openclaw npm paketi, OpenClaw'a ait npm Plugin paketleri (örneğin @openclaw/discord) ve @openclaw/ai gibi yayımlanabilir çalışma alanı paketleri, yayımlanırken npm-shrinkwrap.json dosyasını içerir. Çalışma alanı bağımlılıkları, kök paketle birlikte yayımlandıkları için kök shrinkwrap dosyasından çıkarılır; bunun yerine yayımlanabilir her çalışma alanı paketi kendi geçişli ağacını sabitler. Uygun Plugin paketleri ayrıca açık bundledDependencies ile yayımlanabilir ve yalnızca kurulum sırasındaki çözümlemeye güvenmek yerine çalışma zamanı bağımlılık dosyalarını Plugin tar arşivinde taşıyabilir.

bash
# Shrinkwrap ile yönetilen tüm paketler (kök + yayımlanabilir Plugin'ler)pnpm deps:shrinkwrap:generatepnpm deps:shrinkwrap:check # Yalnızca kök paketpnpm deps:shrinkwrap:root:generatepnpm deps:shrinkwrap:root:check # Yalnızca mevcut değişiklik kümesinden etkilenen paketlerpnpm deps:shrinkwrap:changed:generatepnpm deps:shrinkwrap:changed:check

Oluşturucu, npm'in yayımlanabilir kilit biçimini çözümler ancak pnpm-lock.yaml içinde zaten bulunmayan oluşturulmuş paket sürümlerini reddeder. Bu, pnpm bağımlılık yaşı, geçersiz kılma ve yama inceleme sınırını korur.

Bunları güvenlik açısından hassas olarak inceleyin:

  • pnpm-lock.yaml
  • npm-shrinkwrap.json
  • paketlenmiş Plugin bağımlılığı yükleri
  • tüm package-lock.json farkları

OpenClaw paket doğrulayıcıları, yeni kök paket tar arşivlerinde shrinkwrap bulunmasını zorunlu kılar ve yayımlanmış paketlerde package-lock.json dosyasını reddeder. Plugin npm yayımlama yolu, Plugin'e özgü shrinkwrap dosyasını denetler, pakete özgü paketlenmiş bağımlılıkları kurar, ardından paketi arşivler veya yayımlar.

Yayımlanmış bir paketi inceleme

Kök paket:

bash
npm pack openclaw@<version> --json --pack-destination /tmp/openclaw-packtar -tf /tmp/openclaw-pack/openclaw-<version>.tgz | grep '^package/npm-shrinkwrap.json$'

Plugin paketi:

bash
npm pack @openclaw/discord@<version> --json --pack-destination /tmp/openclaw-plugin-packtar -tf /tmp/openclaw-plugin-pack/openclaw-discord-<version>.tgz | grep '^package/npm-shrinkwrap.json$'tar -tf /tmp/openclaw-plugin-pack/openclaw-discord-<version>.tgz | grep '^package/node_modules/'

Arka plan bilgisi: npm-shrinkwrap.json.

Was this useful?
On this page

On this page