ESM هنوز npm رو فتح نکرده
خلاصهٔ کاملتر
تایتوس وورمر یه مخزن کوچیک ولی جالب داره به اسم npm-esm-vs-cjs که دنبال یه سؤال سادهست: پکیجهای پرمصرف npm واقعاً چه نوع کدی بیرون میدن؟ نویسنده میگه هدف اینه که یه دید تقریبی از پیشرفت مهاجرت به ESM به دست بیاد، نه یه آمار دقیق.
هر پکیج تو یکی از چهار دسته میشینه: ESM (مثلاً type: 'module' تو package.json)، دوگانه (هم شرط import و هم require تو export map)، faux ESM (فیلد module که فقط بعضی باندلرهای قدیمی میفهمنش) و CJS که یعنی هر چیز دیگهای، بهجز پکیجهای @types/* که فیلتر میشن.
روند دادهها گویاست: تو اولین کرال سال ۲۰۲۱ از ۵٬۶۱۷ پکیج فقط ۳۴۱ تا ESM بودن و ۴٬۳۴۹ تا CJS. تو آخرین کرال از ۱۶٬۲۳۱ پکیج، ۲٬۵۹۰ تا ESM، ۳٬۵۷۴ تا دوگانه، ۱٬۶۸۹ تا faux و ۸٬۳۷۸ تا CJS هستن. یعنی سهم CJS از حدود ۷۷ درصد به کمی بیشتر از نصف رسیده و بیشترین رشد هم مال حالت دوگانهست، نه ESM خالص.
date,total,esm,dual,faux,cjs
2021-08-24,5617,341,95,832,4349
2026-06-08,16231,2590,3574,1689,8378نویسنده خودش چندتا هشدار هم میذاره: کرال دسامبر ۲۰۲۵ منبع فهرست پکیجهای محبوب رو از libraries.io به ecosyste.ms عوض کرده، پس پرش عدد کل بخشی از تغییر روشه نه رشد واقعی. ضمناً شمار دانلود قابل دستکاریه، بعضی فورکها اشتباهی بهجای پکیج اصلی شمرده میشن و احتمالاً چیزهایی که اصلاً کد نیستن هم تو دستهٔ CJS جا خوش کردن. دادهها برای دیدن جهت حرکت خوبن، نه برای استناد دقیق.
نکات کلیدی:
- مخزن از ۲۰۲۱ تا امروز، نوع ماژول پکیجهای پرمصرف npm رو تو چهار دسته ثبت میکنه.
- تو آخرین کرال، CJS با ۸٬۳۷۸ از ۱۶٬۲۳۱ پکیج هنوز اکثریت داره.
- رشد اصلی مال پکیجهای دوگانهست: از ۹۵ تا به ۳٬۵۷۴ تا.
- تغییر منبع داده در کرال دسامبر ۲۰۲۵ اعداد کل رو جهش داده، پس مقایسهٔ خام گمراهکنندهست.
- خروجی بهصورت index.csv و index.svg تو خود مخزن در دسترسه.




