دوستی با دنو تمام شد، حالا نود بهترین دوست من است
آدرس مقاله: https://dbusell.com/2026/10/03/deno-to-node/ آدرس نظرات: https://news.ycombinator.com/item?id=49971719 امتیاز: 204 # نظرات: 119
بالاخره وقت آن است که به نود برگردم!
من در این ماه به شدت از Node در پروژه مشتری SvelteKit استفاده کردم. Node کی اینقدر خوب شد‽ Deno مدتهاست که زمان اجرای من بوده است که فراموش کردم چگونه Node کنم. اکنون برگشتم، متوجه شدم که تمام قندهای ECMAScript † پشتیبانی میشوند و APIهای مزاحم قدیمی جایگزین یا مدرن شدهاند. مهمتر از همه، من هرگز مجبور نیستم () را ببینم.
† به نظر نمیرسد که بحث علامت تجاری اوراکل پایان مثبتی داشته باشد:(
اسناد رسمی Node توصیه میکنند که یک اسکریپت اینترنتی را مستقیما به bash وارد کنید (ما هرگز یاد نمیگیریم) تا NVM را برای مدیریت Node & NPM نصب کنیم. تجربه (باستانی) من با NVM و NPM خیره کننده نبوده است. من شنیدم Fast Node Manager (FNM) بهتر است نسخه های Node را تغییر دهد. بدیهی است که من بیحرکت میکنم، اما پروژههای مشتری دارم که نیازمند ثبات هستند.
من PNPM را نیز انتخاب کردم تا فورا وارد pwn نگردم. («M» در NPM مخفف «بدافزار» است.) برخی از اسکریپتهایی که استفاده میکنم دارای نامهای باینری سختکد شدهاند ‡، بنابراین دو نام مستعار اضافه کردم:
شاید این یک جرم باشد، اما تا کنون بی عیب و نقص کار کرده است.
‡ ویرایش: ممکن است زمانی را که باینریهای مختلف را پیوند میدادم گیج کنم. نام مستعار هنگام کپی کردن مراحل از راهنماهای نصب که فرض می کنند NPM نصب شده است کمک می کند.
PNPM همچنین اسکریپت های پس از نصب را مسدود می کند. آیا NPM هنوز آن ها را یولو می کند؟
تنظیمات اضافی را به pnpm-workspace.yaml اضافه کردم تا بهروزرسانی بدافزار را به تاخیر بیندازم.
در ابتدا سعی کردم حداقل سن انتشار را روی "یک ماه" تنظیم کنم، زیرا حذف بدافزار گزارش شده حداقل به این اندازه طول می کشد. این باعث ایجاد مشکلات وابستگی می شود که در آن PNPM برای مطابقت با نسخه های مناسب تلاش می کند. به "یک روز" بسنده کردم. به اندازهای طولانی است که به یک مکنده دیگر اجازه میدهد تا آزمایش بتا شی هولود بعدی را انجام دهد.
Node اکنون میتواند تایپ اسکریپت را بدون ایجاد عصبانیت مانند یک کودک اجرا کند، اگر ستارهها در یک راستا قرار نگیرند. گفته می شود، بسته های TypeScript را به سادگی در NPM منتشر نمی کنید.
چرا؟ فقط انواع را بردار برادر، می دانم که می توانی! بگذار با شیطان قرارداد امضا کنم!
Node.js برای منصرف کردن نویسندگان بسته از انتشار بسته های نوشته شده در TypeScript، از مدیریت فایل های TypeScript در داخل پوشه ها در مسیر node_modules خودداری می کند.
این محدودیت بیشتر فلسفی است تا فنی. با این حال آن را دریافت می کنم. TypeScript یک محصول مایکروسافت است. باز کردن آن دریچه باعث آلودگی کل اکوسیستم می شود. هیچ کس مایکروسافت بیشتری نمی خواهد. من دوست دارم "انواع بومی" سبک را در ECMAScript ببینم. پیشنهادات حاشیه نویسی نوع وجود دارد. من گمان میکنم قبل از اینکه اینها به ثمر برسند، بازنشسته شوم.
بدون بستههای TypeScript به این معنی است که باید جدیدترین slop را برای بستهبندی وسایلم پیدا کنم. Tsdown این ترفند را انجام داد، تنها با دو فایل نقطه اضافی. در مورد آن هیجان زده نیستم (هر dotfile نشان دهنده یک اشتباه است). فکر می کنم حتی پس از حذف deno.json و غیره هم خراب می شوم.
صحبت از قفل مایکروسافت شد، زیرا آنها GitHub را خراب کردند، من نمونه Forgejo خود را خود میزبانی می کنم. محدودیتهای NPM به این معنی است که بستههای من «منشأ» را از دست دادهاند. من مجبور شدم خط مشی اعتماد PNPM را برای اجازه دادن به موارد خودم پیکربندی کنم. اوقات سرگرم کننده!
آخرین آزمایش من برای Node تبدیل ژنراتور سایت استاتیک من از Deno بود. بسیاری از نسخههای Node پیش از این به یک Refactor اصلی نیاز داشت. امروز با Node v26.10.0 کار کمی برای انجام دادن پیدا کردم.
تنها تغییرات مورد نیاز جایگزینی API سیستم فایل Deno با node:fs بود - که نسبت به آنچه من به یاد دارم (به معنای واقعی کلمه 10 سال پیش) بسیار بهبود یافته است. جدای از آن، من مجبور شدم Deno.serve را با آداپتور گره Hono (یک پوشش در اطراف node:http) جایگزین کنم.
پس از این مهاجرت حداقلی، از دیدن ساختهای 15 درصد سریعتر شوکه شدم. پایگاه کد من همچنان از Deno اصطلاحی حمایت می کند. شرط می بندم که با استفاده نکردن از سایر API های داخلی Node عملکرد را روی میز می گذارم. این چیزی است که بعدا باید بررسی شود. تنها تغییر دیگری که انجام دادم جایگزین کردن @std/path Deno با node:path بود که یک مبادله مستقیم وارداتی است.
بنابراین اگر قرار بود در وسط TL;DR باشم: Node یک درخشش گرفت، وای!
احتمالا مدتی است که این را میدانید. من از روی عادت و آشنایی به استفاده از Deno ادامه دادم. و من اخیرا مشتاق نوشتن جاوا اسکریپت سمت سرور نبودم.
من این قسمت را دفن می کنم زیرا یک اسب مرده را شلاق می زند. در نهایت، Deno زمانی که به سیرک سیلیکون ولی اجازه داد «موفقیت» را تعریف کند، شکست خورد. Deno از یک زمان اجرا نوآورانه جاوا اسکریپت به یک راه اندازی خسته کننده با محصولات غیرقابل قبول تبدیل شد. نیمی از کارمندان اخراج شدند و چیزی که باقی مانده است توییت کردن فانتزیهای هوش مصنوعی و کدنویسی لرزشی Temu Cloudflare است.
دلیلی برای استفاده از زمان اجرا Deno وجود ندارد. Deno Land Inc سالها پیش از نوآوری آن دست کشید. Node به آرامی اما مطمئنا پیشی گرفته است، حتی در جاهایی از Deno پیشی گرفته است.
اساسا چیزهایی که آن را غیرقابل استفاده در مرزهای دیگر میکردند. پشتیبانی JSR خیلی سریع در صورت درخواست حساب من را حذف کرد. من دوست ندارم پروفایل های مرده را در اینترنت بگذارم. هیچ یک از بسته های من قابل مشاهده نیستند اما نسخه های قدیمی قابل نصب هستند.
اوایل سرگرم کننده بود اما اکنون زمان خداحافظی است.
متن اصلی (انگلیسی)
Friendship ended with Deno, now Node is my best friend
Article URL: https://dbushell.com/2026/10/03/deno-to-node/ Comments URL: https://news.ycombinator.com/item?id=49971719 Points: 204 # Comments: 119