execa؛ اجرای دستورها تو نود بدون دردسر شل
خلاصهٔ کاملتر
execa یه پکیج جاوااسکریپتیه که اجرای پروسهها رو از دل اسکریپت، اپلیکیشن یا کتابخونه انجام میده. تو توضیحات پروژه اومده که برخلاف شل، برای استفادهٔ برنامهنویسی بهینه شده و روی ماژول اصلی child_process نودجیاس سواره. یعنی همون کارهایی که تو bash با پایپ و کوتیشن انجام میدادین، اینجا با یه API تمیز و پرامیسمحور جمع شده.
سادهترین شکل استفادهش سینتکس template stringه، شبیه چیزی که تو zx میبینین:
import {execa} from 'execa';
const {stdout} = await execa`npm run build`;
// Print command's output
console.log(stdout);نکتهٔ مهمش اینه که هیچ escape یا کوتیشنی لازم نیست و همین ریسک shell injection رو از بین میبره. باینریهای نصبشدهٔ محلی رو هم بدون npx اجرا میکنه و پشتیبانی ویندوزش بهتر شده: shebang، PATHEXT و خاتمهٔ نرم پروسه. برای دیباگ هم خطاهای بادقت، حالت verbose و لاگ سفارشی داره.
پایپکردن چند سابپروسه هم بهتر از شل کار میکنه، چون به نتیجههای میانی هم دسترسی دارین:
const {stdout, pipedFrom} = await execa`npm run build`
.pipe`sort`
.pipe`head -n 2`;بقیهٔ قابلیتها حول ورودی و خروجی میچرخه: خروجی رو میشه به خطهای متنی شکست یا روش پیمایش کرد، ورودی رو از فایل، رشته، Uint8Array، ایتربل یا آبجکت داد، خروجی رو به فایل فرستاد یا همزمان هم گرفت و هم روی ترمینال چاپ کرد. استریمهای نود و وب، تبدیل سابپروسه به استریم Duplex و تبادل پیام بین پروسهها هم پشتیبانی میشه.
نکات کلیدی:
- اجرای دستورها با سینتکس template string و پرامیس، بدون نیاز به escape یا کوتیشن
- حذف ریسک shell injection و اجرای باینریهای محلی بدون npx
- پشتیبانی بهتر ویندوز: shebang، PATHEXT و خاتمهٔ نرم پروسه
- پایپ چند سابپروسه با دسترسی به نتیجههای میانی
- خطاهای بادقت، حالت verbose و لاگ سفارشی برای دیباگ




