Gateway
npm shrinkwrap
OpenClaw स्रोत checkouts pnpm-lock.yaml का उपयोग करते हैं। प्रकाशित OpenClaw npm
पैकेज npm-shrinkwrap.json, npm की publishable dependency lockfile, का उपयोग करते हैं, ताकि
पैकेज इंस्टॉल रिलीज़ के दौरान समीक्षा किए गए dependency graph का उपयोग करें।
आसान संस्करण
Shrinkwrap उस dependency tree की रसीद है जो npm पैकेज के साथ शिप होती है। यह npm को बताता है कि कौन से सटीक transitive package versions इंस्टॉल करने हैं।
OpenClaw रिलीज़ के लिए, इसका मतलब है:
- प्रकाशित पैकेज इंस्टॉल समय पर npm से नया dependency graph बनाने को नहीं कहता;
- dependency बदलावों की समीक्षा आसान हो जाती है क्योंकि वे lockfile में दिखाई देते हैं;
- रिलीज़ सत्यापन उसी graph का परीक्षण कर सकता है जिसे उपयोगकर्ता इंस्टॉल करेंगे;
- प्रकाशित करने से पहले package-size या native-dependency आश्चर्य पहचानना आसान होता है।
Shrinkwrap sandbox नहीं है। यह किसी dependency को अपने आप सुरक्षित नहीं बनाता, और
यह host isolation, openclaw security audit, package
provenance, या install smoke tests की जगह नहीं लेता।
संक्षिप्त मानसिक मॉडल:
| फ़ाइल | जहाँ यह मायने रखती है | इसका अर्थ |
|---|---|---|
pnpm-lock.yaml |
OpenClaw स्रोत checkout | Maintainer dependency graph |
npm-shrinkwrap.json |
प्रकाशित npm पैकेज | उपयोगकर्ताओं के लिए npm install graph |
package-lock.json |
स्थानीय npm ऐप्स | OpenClaw publish contract नहीं |
OpenClaw इसका उपयोग क्यों करता है
OpenClaw एक Gateway, Plugin host, model router, और agent runtime है। एक default install startup time, disk use, native package downloads, और supply-chain exposure को प्रभावित कर सकता है।
Shrinkwrap रिलीज़ समीक्षा को एक स्थिर सीमा देता है:
- reviewers transitive dependency movement देख सकते हैं;
- package validators अनपेक्षित lockfile drift को अस्वीकार कर सकते हैं;
- package acceptance उस graph के साथ installs का परीक्षण कर सकता है जो शिप होगा;
- plugin packages root package पर plugin-only dependencies का स्वामित्व रखने के बजाय अपना locked dependency graph साथ ले जा सकते हैं।
लक्ष्य "अधिक lockfiles" नहीं है। लक्ष्य स्पष्ट स्वामित्व के साथ reproducible release installs है।
तकनीकी विवरण
root openclaw npm package और OpenClaw-स्वामित्व वाले npm plugin packages प्रकाशित होते समय
npm-shrinkwrap.json शामिल करते हैं। उपयुक्त OpenClaw-स्वामित्व वाले plugin
packages स्पष्ट bundledDependencies के साथ भी प्रकाशित हो सकते हैं, ताकि उनकी runtime
dependency files install-time resolution पर ही निर्भर रहने के बजाय plugin tarball में साथ लाई जाएँ।
सीमा को इस तरह बनाए रखें:
pnpm deps:shrinkwrap:generatepnpm deps:shrinkwrap:checkgenerator npm का publishable lock format resolve करता है, लेकिन उन generated
package versions को अस्वीकार करता है जो पहले से pnpm-lock.yaml में मौजूद नहीं हैं। इससे
pnpm dependency age, override, और patch-review boundary अक्षुण्ण रहती है।
root package को plugin packages छुए बिना जानबूझकर refresh करते समय ही root-only commands का उपयोग करें:
pnpm deps:shrinkwrap:root:generatepnpm deps:shrinkwrap:root:checkइन फ़ाइलों की समीक्षा security-sensitive मानकर करें:
pnpm-lock.yamlnpm-shrinkwrap.json- bundled plugin dependency payloads
- कोई भी
package-lock.jsondiff
OpenClaw package validators नए root package tarballs में shrinkwrap आवश्यक करते हैं।
plugin npm publish path plugin-local shrinkwrap जाँचता है, package-local bundled dependencies
इंस्टॉल करता है, और फिर pack या publish करता है। Package
validators प्रकाशित OpenClaw packages के लिए package-lock.json को अस्वीकार करते हैं।
प्रकाशित root package का निरीक्षण करने के लिए:
npm pack openclaw@<version> --json --pack-destination /tmp/openclaw-packtar -tf /tmp/openclaw-pack/openclaw-<version>.tgz | grep '^package/npm-shrinkwrap.json$'OpenClaw-स्वामित्व वाले plugin package का निरीक्षण करने के लिए:
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/'पृष्ठभूमि: npm-shrinkwrap.json.