فشرده‌ساز JavaScript

JavaScript را جای‌گذاری کنید تا با Terser کوچک شود: کد مرده حذف، نام‌ها کوتاه و فاصله‌ها ناپدید می‌شوند. خطاهای نحوی دقیقاً به خط و ستون اشاره می‌کنند.

اجرا در مرورگر شمابدون ثبت‌نامبدون آپلود

خروجی فشرده‌شده

نحوهٔ استفاده از فشرده‌ساز JavaScript

  1. JavaScript خود را جای‌گذاری کنید یا یک فایل .js باز کنید.
  2. گزینه‌ها را انتخاب کنید: کوتاه‌سازی نام‌ها متغیرهای محلی را کوتاه می‌کند، فشرده‌سازی کد را به معادلی کوچک‌تر بازنویسی می‌کند، ماژول ES امکان import/export در سطح بالا را فعال می‌کند.
  3. هدف ECMAScript را که مرورگرهای کاربرانتان پشتیبانی می‌کنند انتخاب کنید. ES2020 برای همهٔ مرورگرهای همیشه‌به‌روز امن است.
  4. حجم، میزان صرفه‌جویی و تخمین gzip را زیر خروجی بررسی کنید.
  5. کد فشرده‌شده را کپی کنید یا به‌صورت 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ها و بررسی اینکه یک کد تا چه حد کوچک می‌شود ایده‌آل است.

پرسش‌های متداول

آیا کد من روی سرور آپلود می‌شود؟
خیر. Terser داخل تب مرورگر شما اجرا می‌شود، بنابراین کد اختصاصی شما هرگز از دستگاهتان خارج نمی‌شود.
آیا فشرده‌سازی ممکن است کد من را خراب کند؟
Terser فقط تبدیل‌هایی را اعمال می‌کند که رفتار JavaScript معتبر را یکسان نگه می‌دارند. کدی که به Function.prototype.toString() یا از طریق eval به نام متغیرهای محلی وابسته است ممکن است تحت تأثیر قرار گیرد؛ در این صورت کوتاه‌سازی نام‌ها را خاموش کنید.
آیا از سینتکس مدرن مانند async/await، کلاس‌ها و optional chaining پشتیبانی می‌کند؟
بله. Terser سینتکس ES2022+ را تجزیه می‌کند. تنظیم هدف فقط مشخص می‌کند خروجی از چه سینتکسی می‌تواند استفاده کند؛ ویژگی‌های جدیدتر را به نسخه‌های قدیمی‌تر ترنسپایل نمی‌کند.
تفاوت minify و uglify چیست؟
هر دو یک معنا دارند. UglifyJS ابزار کلاسیک بود؛ Terser فورک نگه‌داری‌شدهٔ آن با پشتیبانی کامل از ES2015+ است.

ابزارهای مرتبط