bundle: اپ Node رو تو یه فایل امضاشده تحویل بده
خلاصهٔ کاملتر
ابزار bundle یه راه تازه برای تحویل اپهای Node.js پیشنهاد میده: کل اپ و وابستگیهاش موقع انتشار تو یه فایل .nzip فریز میشه و یه امضا کل فایل رو پوشش میده. سازندهش میگه وقتی نسخهٔ 1.4 یه ابزار رو منتشر میکنی، درواقع یه «دستور پخت» فرستادی که ماشین کاربر میپزه. یعنی ^1.2.0 همون چیزیه که رجیستری امروز میگه، اسکریپتهای postinstall قبل از هر بررسیای اجرا میشن و دو نصب از یه نسخه میتونن فرق داشته باشن.
فایل خروجی یه ZIP واقعیه، پس با unzip -l میشه دید چی توشه. اگه یه بایت هم عوض بشه امضا دیگه درست درنمیاد. از Node 26 به بعد، node --vfs-load فایل رو مونت میکنه (یعنی مثل یه پوشهٔ مجازی بهش دسترسی میده) و اپ رو بدون استخراج روی دیسک اجرا میکنه. خلاصهٔ روند کار اینه:
bundle create --base ./app --files app.manifest --launcher --output app.unsigned.nzip
bundle sign app.unsigned.nzip
./app.nzipساخت فایل چهار مرحله داره. اول اپ رو یه بار اجرا میکنی تا هر فایلی که میخونه ثبت بشه، چون require پویا و فایلهای داده دقیقاً چیزایی هستن که تحلیل ایستا نمیبینه. بعد آرشیو ساخته میشه، بعد بررسی میشه (خودت یا با skill بررسی که برای Claude Code نصب میکنه) و آخر با sigstore امضا میشه. sigstore یعنی امضا با هویت CI یا لاگینت، بدون کلیدی که نگه داری. ساخت هم تکرارپذیره، یعنی هرکسی میتونه بازسازیش کنه و مقایسه کنه.
موقع نصب، bundle install قبل از هر کاری نشون میده کی فایل رو امضا کرده و کی براش ضمانت داده یا هشدار داده. این ضمانتها (attestation) رکوردهایی تو حسابهای Atmosphere یا همون atproto آدمها هستن. هر کسی فقط تو حساب خودش مینویسه و رجیستری مرکزیای هم وجود نداره که بشه هکش کرد. سیاست اعتماد دست خودته و جوابت برای آپدیتها هم یادش میمونه. suiteها و پلاگینهای امضاشده هم پشتیبانی میشن.
سازنده خودش روی محدودیتها صریحه. امضا فقط میگه کی ساختتش، نه اینکه بیخطره، چون بیشتر حملههای npm از حسابهای واقعیِ هکشده و با امضای درست اومدن. ابزار سندباکس هم نیست و کد با دسترسی کامل اجرا میشه. اجرای اپ با اسم (از طریق launcher) امضا رو چک نمیکنه و برای چک همیشگی باید از bundle run یا خروجی bundle sea استفاده کنی. همهچیز هم هنوز آزمایشیه.
نکات کلیدی:
- به Node 26.11.1 به بالا با فلگ --experimental-vfs نیاز داره.
- خروجی یه ZIP واقعیه و یه امضا کل فایل رو پوشش میده.
- موقع نصب هیچ اسکریپتی اجرا نمیشه و فایلهای دستکاریشده رد میشن.
- امضای پیشفرض با sigstore هست و CA شخصی هم پشتیبانی میشه.
- attestationها روی atproto ذخیره میشن و رجیستری مرکزی نداره.
- سندباکس نیست و اجرای اپ با اسم امضا رو چک نمیکنه.




