ویژگیهای کلیدی این مینیفایر جاوااسکریپت
- فشردهسازی فوری JS در مرورگر (بدون آپلود فایل روی سرورها)
- حذف نظرات و فشردهسازی فضاهای خالی و خطوط جدید غیرضروری
- فشردهسازی مبتنی بر AST مشابه Terser (تا کردن ثابتها، حذف کد مرده در شرایط ایمن)
- تغییر نام شناسهها به صورت اختیاری و پرچمهای پیشرفته از طریق API یا یکپارچهسازی ساخت
- با جاوااسکریپت مدرن (ES2015+)، اسکریپتهای کلاسیک و خروجی ماژول ساده کار میکند
- کپی یا دانلود یککلیکی جاوااسکریپت مینیفای شده
- از مؤلفه اصلی مشابه فرمتدهنده جاوااسکریپت استفاده میکند: با یک عمل بین خروجی فرمت شده و مینیفای شده جابجا شوید
- پردازش ۱۰۰٪ سمت کلاینت برای حداکثر حریم خصوصی
🛠️ نحوه مینیفای کردن جاوااسکریپت for javascript-minifier
جاوااسکریپت خود را جایگذاری یا آپلود کنید
یک فایل .js/.mjs را در ویرایشگر رها کنید یا مستقیماً جاوااسکریپت خود را جایگذاری کنید. این ابزار برای اسکریپتهای تکی، فایلهای کمکی و بستههای کوچک ایدهآل است.
حالت مینیفیکیشن را انتخاب کنید
از مؤلفه مشابه فرمتدهنده جاوااسکریپت استفاده کنید: به عمل مینیفای سوئیچ کنید تا به جای کد فرمت شده، خروجی فشرده دریافت کنید.
مینیفایر را اجرا کنید
کد شما به AST تجزیه میشود، نظرات و فضاهای خالی اضافی حذف میشوند و پاسهای فشردهسازی ایمن برای کاهش اندازه بسته اعمال میشوند.
نتیجه را کپی یا دانلود کنید
جاوااسکریپت مینیفای شده را از ویرایشگر خروجی کپی کنید یا آن را به عنوان فایل .min.js دانلود کرده و در HTML، CDN یا خروجی ساخت خود قرار دهید.
مشخصات فنی
تبدیلهای اصلی (پیشفرضهای ایمن)
پیشفرضهای محافظهکارانه برای حفظ رفتار زمان اجرا در حالی که اندازه کد را به طور قابل توجهی کاهش میدهند طراحی شدهاند.
| عملیات | اعمال شده | یادداشتها |
|---|---|---|
| حذف نظرات خطی و بلوکی | ✅ | نظرات مجوز (/*! ... */) میتوانند از طریق پیکربندی/API حفظ شوند |
| فشردهسازی فضاهای خالی و خطوط جدید | ✅ | فضاهای خالی در جایی که از نظر معنایی ایمن است نرمالسازی میشوند؛ محتوای رشتهها و عبارات باقی میماند |
| تا کردن ثابتها و درونریزی ساده | ✅ | فقط زمانی که نتیجه به طور قابل اثبات معادل باشد |
| حذف کد مرده | ✅ | شاخههایی را حذف میکند که پس از انتشار ثابتها غیرقابل دسترس هستند |
| تغییر نام شناسهها | ✅ اختیاری | نام متغیرها و توابع را کوتاه میکند؛ قابل پیکربندی از طریق گزینههای پیشرفته/API |
| حذف کمکهای دیباگ (console/debugger) | ✅ اختیاری | میتوان فعال شود وقتی که به خروجی کنسول در محیط تولید وابسته نیستید |
کنترلهای ایمنی و سازگاری
گزینههای پیشرفته (عمدتاً از طریق ابزارهای ساخت/API در دسترس) به تنظیم میزان تهاجمی بودن فشردهسازی کمک میکنند.
| گزینه | پیشفرض | توضیح |
|---|---|---|
| هدف ecma | 2020 | سینتکس خروجی و برخی قوانین فشردهسازی را کنترل میکند |
| ماژول در مقابل اسکریپت | اسکریپت | بهینهسازیهای ماژول/سطح بالا را برای بستههای ESM فعال کنید |
| keep_fnames / keep_classnames | false | نامها را برای ردگیری بهتر پشته یا چارچوبهای DI حفظ میکند |
| safari10 / legacy quirks | خاموش | فقط هنگام هدفگیری موتورهای قدیمی خاص فعال کنید |
| toplevel | false | اجازه حذف اتصالات سطح بالای استفاده نشده را برای تکان دادن درخت پیشرفته میدهد |
کاهش اندازه معمول
صرفهجویی بسته به قالببندی اصلی، تراکم نظرات و میزان کد مرده موجود متفاوت است.
| سبک ورودی | فقط فشردهسازی | فشردهسازی + تحریف (تهاجمی) |
|---|---|---|
| کامنتگذاری و فاصلهگذاری سنگین | ۳۵٪–۵۵٪ | ۵۰٪–۷۰٪ |
| کد برنامه با قالببندی متوسط | ۲۰٪–۳۵٪ | ۳۵٪–۵۵٪ |
| کد از قبل فشرده | ۵٪–۱۵٪ | ۱۰٪–۲۵٪ |
جایگزینهای CLI برای ساختهای تولید
برای برنامههای کامل و پروژههای چند فایلی، فشردهسازی را در خط لوله CI/CD خود ادغام کنید.
Node.js
Terser (حالت رایج)
npx terser src/app.js -o dist/app.min.js -c ecma=2020,passes=2 -mدو مرحله فشردهسازی به همراه تحریف شناسهها برای کاهش قوی حجم.
Terser با نامهای رزرو شده و drop_console
npx terser src/app.js -o dist/app.min.js -c passes=2,drop_console=true -m reserved=["React","ReactDOM"] --keep-fnamesمحافظت از متغیرهای سراسری مهم، حذف فراخوانیهای کنسول و حفظ نام توابع برای دیباگ.
Linux/macOS/Windows
esbuild (بسیار سریع)
npx esbuild src/app.js --minify --target=es2018 --outfile=dist/app.min.jsبستهبندی و فشردهسازی در یک مرحله واحد و فوقالعاده سریع.
SWC (مبتنی بر Rust)
npx swc src -d dist --minifyترنسپایل و فشردهسازی با یک موتور Rust با کارایی بالا.
موارد استفاده رایج
عملکرد وب و Core Web Vitals
- کاهش حجم انتقال جاوااسکریپت برای LCP و TTI سریعتر
- حذف کامنتها و لاگهای دیباگ قبل از استقرار
- کوچکسازی باندلهای سمت کلاینت قبل از فشردهسازی gzip/brotli
/* کامنت مخصوص ساخت که در خروجی فشرده حذف میشود */اتوماسیون CI/CD و انتشار
- فشردهسازی JS به عنوان آخرین مرحله در خط لوله ساخت شما
- آمادهسازی باندلهای کوچک و سازگار با کش برای CDNها
- تولید منابع آماده تولید همراه با فشردهسازهای HTML/CSS
ویجتها، تعبیهها و آزمایشها
- ارسال قطعه کدهای فشرده از طریق مدیران تگ
- تعبیه ویجتهای فشرده در صفحات شخص ثالث
- آزمایش استراتژیهای مختلف فشردهسازی روی اسکریپتهای حیاتی
❓ Frequently Asked Questions
آیا فشردهسازی جاوااسکریپت نحوه اجرای کد من را تغییر میدهد؟
آیا این ابزار مستقیماً TypeScript یا JSX را مدیریت میکند؟
آیا جاوااسکریپت من به سرور آپلود میشود؟
فایل جاوااسکریپت من چقدر میتواند بزرگ باشد؟
تفاوت قالببندی و فشردهسازی چیست؟
Pro Tips
در باندلر خود NODE_ENV=production (یا معادل آن) را تعریف کنید تا هرس کد مرده اضافی در بسیاری از کتابخانهها فعال شود.
منابع فشردهنشده (و برای برنامههای بزرگ، نقشههای منبع) را در کنترل نسخه نگه دارید و فقط داراییهای فشرده شده را در تولید سرو کنید.
هنگام تغییر نام از نامهای رزرو شده استفاده کنید تا APIهای عمومی متصل به window یا globalThis محافظت شوند.
فشردهسازی را با gzip یا brotli در سطح CDN یا سرور ترکیب کنید تا صرفهجویی اندازه مضاعف به دست آورید.
Additional Resources
Other Tools
- زیباکننده CSS
- زیباکننده HTML
- زیباکننده JavaScript
- زیباکننده PHP
- انتخابگر رنگ
- استخراجکننده اسپرایت
- دیکودر Base64
- انکودر Base64
- فرمتدهنده C#
- فرمتدهنده CSV
- Dockerfile Formatter
- فرمتدهنده Elm
- فرمتدهنده ENV
- فرمتدهنده Go
- فرمتدهنده GraphQL
- فرمتدهنده HCL
- فرمتدهنده INI
- فرمتدهنده JSON
- فرمتدهنده LaTeX
- فرمتدهنده Markdown
- فرمتدهنده Objective-C
- Php Formatter
- فرمتدهنده Proto
- فرمتدهنده Python
- فرمتدهنده Ruby
- فرمتدهنده Rust
- فرمتدهنده Scala
- فرمتدهنده اسکریپت شل
- فرمتدهنده SQL
- قالببندی SVG
- قالببندی Swift
- قالببندی TOML
- Typescript Formatter
- قالببندی XML
- قالببندی YAML
- قالببندی Yarn
- کوچککننده CSS
- Html Minifier
- کوچککننده JSON
- کوچککننده XML
- نمایشگر هدرهای HTTP
- PDF به متن
- تستکننده Regex
- بررسیکننده رتبه SERP
- جستجوی Whois