فشردهساز JavaScript
JavaScript را جایگذاری کنید تا با Terser کوچک شود: کد مرده حذف، نامها کوتاه و فاصلهها ناپدید میشوند. خطاهای نحوی دقیقاً به خط و ستون اشاره میکنند.
اجرا در مرورگر شمابدون ثبتنامبدون آپلود
نحوهٔ استفاده از فشردهساز JavaScript
- JavaScript خود را جایگذاری کنید یا یک فایل
.jsباز کنید. - گزینهها را انتخاب کنید: کوتاهسازی نامها متغیرهای محلی را کوتاه میکند، فشردهسازی کد را به معادلی کوچکتر بازنویسی میکند، ماژول ES امکان
import/exportدر سطح بالا را فعال میکند. - هدف ECMAScript را که مرورگرهای کاربرانتان پشتیبانی میکنند انتخاب کنید. ES2020 برای همهٔ مرورگرهای همیشهبهروز امن است.
- حجم، میزان صرفهجویی و تخمین gzip را زیر خروجی بررسی کنید.
- کد فشردهشده را کپی کنید یا بهصورت
output.min.jsدانلود کنید.
فشردهساز JavaScript چه میکند؟
فشردهسازی JavaScript را بدون تغییر رفتار آن کوچکتر میکند. این ابزار از Terser استفاده میکند، همان فشردهسازی که پشت webpack، Vite و Rollup است، و سه نوع تغییر اعمال میکند:
- حذف فاصلهها و کامنتها: موتور JavaScript به تورفتگی، خط جدید و کامنت نیازی ندارد.
- Mangling: نام متغیرهای محلی و پارامترهای توابع مانند
subtotalبه حروف تکی تبدیل میشوند. نامهای سراسری و ویژگیهای اشیا دستنخورده میمانند تا API عمومی شما همچنان کار کند. - فشردهسازی: عبارتهای ثابت محاسبه میشوند، کد غیرقابلدسترس حذف میشود، دستورهای
ifبه عملگر سهتایی تبدیل میشوند و توابع کوتاه inline میشوند.
Minify یا gzip: آیا به هر دو نیاز دارید؟
بله. Gzip و Brotli الگوهای تکراری بایت را در انتقال فشرده میکنند، در حالی که فشردهسازی بایتهایی را حذف میکند که مرورگر در غیر این صورت باید دانلود، تجزیه و کامپایل کند. یک اسکریپت معمولی با فشردهسازی 40 تا 60٪ و سپس با gzip، 60 تا 70٪ دیگر کوچک میشود. حجم gzip نمایشدادهشده اینجا تخمین خوبی از چیزی است که سرور شما واقعاً میفرستد.
حفظ کامنتهای لایسنس
بسیاری از لایسنسهای متنباز (MIT، BSD، Apache) الزام میکنند که اعلان کپیرایت همراه کد بماند. طبق قرارداد، کامنتهایی که با /*! شروع میشوند یا شامل @license یا @preserve هستند، وقتی حفظ کامنتهای لایسنس روشن باشد، حفظ میشوند.
چه زمانی دستی فشرده نکنیم
اگر پروژهٔ شما از یک bundler استفاده میکند، بگذارید خودش buildهای production را فشرده کند و برای دیباگ source map بسازد. یک فشردهساز آنلاین برای اسکریپتهای یکباره، قطعهکدهای CMS یا tag manager، bookmarkletها و بررسی اینکه یک کد تا چه حد کوچک میشود ایدهآل است.
پرسشهای متداول
آیا کد من روی سرور آپلود میشود؟
آیا فشردهسازی ممکن است کد من را خراب کند؟
Function.prototype.toString() یا از طریق eval به نام متغیرهای محلی وابسته است ممکن است تحت تأثیر قرار گیرد؛ در این صورت کوتاهسازی نامها را خاموش کنید.