~2 دقیقه مطالعه • بروزرسانی ۹ دی ۱۴۰۴
1. معرفی
SEA به توسعهدهندگان اجازه میدهد برنامههای Node.js را بهصورت یک فایل اجرایی مستقل توزیع کنند. این قابلیت برای سیستمهایی که Node.js نصب ندارند بسیار مفید است.
2. مراحل ساخت SEA
- نوشتن اسکریپت اصلی (مثلاً hello.js).
- ایجاد فایل پیکربندی (sea-config.json).
- تولید blob با
--experimental-sea-config. - کپی باینری Node.js و تغییر نام آن.
- تزریق blob با ابزار
postject. - امضای باینری (در macOS و Windows).
- اجرای فایل اجرایی مستقل.
3. پیکربندی blob
فایل پیکربندی شامل مسیر اسکریپت اصلی، خروجی blob، و گزینههای اضافی مانند useSnapshot, useCodeCache, execArgv و assets است.
{
"main": "hello.js",
"output": "sea-prep.blob",
"useCodeCache": true,
"execArgv": ["--no-warnings", "--max-old-space-size=2048"],
"assets": {
"a.jpg": "/path/to/a.jpg",
"b.txt": "/path/to/b.txt"
}
}
4. مدیریت منابع (Assets)
sea.getAsset(key): دریافت داده بهصورت ArrayBuffer یا رشته.sea.getAssetAsBlob(key): دریافت داده بهصورت Blob.sea.getRawAsset(key): دریافت دادهٔ خام بدون کپی.sea.getAssetKeys(): لیست کلیدهای منابع تزریقشده.
5. Snapshot و Code Cache
- useSnapshot: اجرای اسکریپت در زمان ساخت و ذخیرهٔ وضعیت heap برای بارگذاری سریعتر.
- useCodeCache: تولید cache برای کد V8 جهت بهبود سرعت راهاندازی.
6. آرگومانهای اجرا
execArgv: تعیین فلگهای Node.js هنگام اجرای SEA.execArgvExtension: کنترل نحوهٔ افزودن آرگومانهای اضافی ("none", "env", "cli").
7. محدودیتها
- فقط از سیستم ماژول CommonJS پشتیبانی میشود.
require()در اسکریپت تزریقشده فقط برای ماژولهای داخلی قابل استفاده است.- پشتیبانی رسمی فقط روی Windows، macOS، و Linux (بهجز Alpine و معماری s390x).
نتیجهگیری
ویژگی SEA در Node.js ابزاری قدرتمند برای توزیع برنامهها بهصورت فایل اجرایی مستقل است. با پشتیبانی از snapshot، code cache، و مدیریت منابع، توسعهدهندگان میتوانند برنامههای سبک، سریع، و قابل حمل ایجاد کنند.
نوشته و پژوهش شده توسط دکتر شاهین صیامی