node-notifier: نوتیفیکیشن دسکتاپ از دل Node.js
خلاصهٔ کاملتر
node-notifier یه پکیج npm هست که از داخل Node.js نوتیفیکیشن بومی دسکتاپ میفرسته. روی macOS از Notification Center استفاده میکنه، روی ویندوز 8 به بعد از Toast (یعنی همون پنجرههای کوچیکی که گوشهٔ صفحه بالا میان) و روی ویندوزهای قدیمیتر از بالونهای taskbar. روی لینوکس هم ابزار notify-send رو صدا میزنه و اگه هیچکدوم نبود، Growl رو بهعنوان جایگزین امتحان میکنه.
نسخهٔ جدید به Node.js 22.22+، 24.15+ یا 26+ نیاز داره و فقط ES module هست. ولی طبق README هنوز require('node-notifier') هم جواب میده، چون Node از require(esm) پشتیبانی میکنه. سادهترین حالت استفاده این شکلیه:
import notifier from 'node-notifier';
notifier.notify({
title: 'My notification',
message: 'Hello, there!',
actions: ['OK', 'Cancel']
});notifier پیشفرض خودش نوتیفایر مناسب پلتفرم رو انتخاب میکنه و گزینههایی که یه پلتفرم پشتیبانی نمیکنه نادیده گرفته میشن. اگه بخوای برای هر سیستم تنظیمات دقیقتری بدی، میتونی مستقیم کلاسهایی مثل NotificationCenter، WindowsToaster، WindowsBalloon، NotifySend و Growl رو import کنی.
هر پلتفرم ریزهکاریهای خودشو داره. روی macOS پکیج نسخهٔ 3.0.0 ابزار terminal-notifier رو همراه خودش داره و گزینهٔ icon پشتیبانی نمیشه، چون macOS همیشه آیکون برنامهٔ فرستنده رو نشون میده. فقط نوتیفیکیشنهایی که actions یا reply دارن منتظر کاربر میمونن و تا اون موقع پروسس رو زنده نگه میدارن. روی ویندوز از SnoreToast استفاده میشه و اگه appID رو ست نکنی، توی Toast اسم «SnoreToast» دیده میشه.
README چندتا مشکل رایج رو هم توضیح داده. توی WSL نوتیفیکیشنها پیشفرض توی ویندوز نشون داده میشن، مگه اینکه متغیر NODE_NOTIFIER_WSL_NOTIFIER=linux رو موقع اجرا ست کنی. پروسسهایی که با cron یا PM2 اجرا میشن باید با همون کاربری که لاگین کرده اجرا بشن. روی لینوکس هم باید XDG_RUNTIME_DIR ست بشه تا notify-send به session bus برسه. توی Electron باید پوشهٔ vendor/ از آرشیو asar بیرون بمونه و توی webpack هم پکیج باید external بشه، چون باینریهاشو نسبت به فایلهای خودش پیدا میکنه.
نکات کلیدی:
- node-notifier روی macOS از Notification Center، روی ویندوز 8+ از Toast و روی لینوکس از notify-send استفاده میکنه.
- نسخهٔ فعلی فقط ES module هست و Node.js 22.22+، 24.15+ یا 26+ لازم داره.
- روی macOS گزینهٔ icon کار نمیکنه و نسخهٔ 3.0.0 ابزار terminal-notifier همراه پکیجه.
- روی ویندوز بدون ست کردن appID، اسم «SnoreToast» توی نوتیفیکیشن دیده میشه.
- دکمههای actions روی لینوکس به libnotify نسخهٔ 0.7.10 یا بالاتر نیاز دارن.
- سرویسهایی که روی ویندوز با کاربر SYSTEM اجرا میشن نمیتونن نوتیفیکیشن نشون بدن.




