מכווץ JavaScript (JS Minifier)
הדביקו JavaScript כדי להקטין אותו עם Terser: קוד מת מוסר, שמות מתקצרים והרווחים נעלמים. שגיאות תחביר מצביעות על השורה והעמודה המדויקות.
רץ בדפדפן שלכםבלי הרשמהשום דבר לא מועלה
איך משתמשים בכלי מכווץ JavaScript
- הדביקו את ה-JavaScript שלכם או פתחו קובץ
.js. - בחרו אפשרויות: קיצור שמות מקצר משתנים מקומיים, דחיסה משכתבת את הקוד לגרסה שקולה וקטנה יותר, ES module מאפשר
import/exportברמה העליונה. - בחרו את יעד ה-ECMAScript שהדפדפנים של המשתמשים שלכם תומכים בו. ES2020 בטוח לכל הדפדפנים המתעדכנים.
- בדקו את הגודל, החיסכון והערכת ה-gzip שמתחת לפלט.
- העתיקו את הקוד המכווץ או הורידו אותו כ-
output.min.js.
מה עושה מכווץ JavaScript?
כיווץ מקטין את ה-JavaScript בלי לשנות את מה שהוא עושה. הכלי משתמש ב-Terser, המכווץ שעומד מאחורי webpack, Vite ו-Rollup, ומבצע שלושה סוגי שינויים:
- הסרת רווחים והערות: מנוע ה-JavaScript לא צריך הזחות, ירידות שורה והערות.
- Mangling: שמות של משתנים מקומיים ופרמטרים של פונקציות, כמו
subtotal, הופכים לאותיות בודדות. שמות גלובליים ומאפייני אובייקטים לא משתנים, כך שה-API הציבורי שלכם ממשיך לעבוד. - דחיסה: ביטויים קבועים מחושבים מראש, קוד שאינו נגיש מוסר, משפטי
ifהופכים לאופרטורים טרנריים ופונקציות קצרות משולבות במקום הקריאה.
כיווץ לעומת gzip: האם צריך את שניהם?
כן. Gzip ו-Brotli דוחסים תבניות בתים חוזרות בזמן ההעברה, ואילו כיווץ מסיר בתים שהדפדפן היה צריך להוריד, לנתח ולקמפל. סקריפט טיפוסי קטן ב-40–60% מהכיווץ, ואז בעוד 60–70% מ-gzip. גודל ה-gzip שמוצג כאן הוא הערכה טובה למה שהשרת שלכם ישלח בפועל.
שמירת הערות רישיון
רישיונות קוד פתוח רבים (MIT, BSD, Apache) דורשים שהודעת זכויות היוצרים תישאר עם הקוד. לפי המוסכמה, הערות שמתחילות ב-/*! או מכילות @license או @preserve נשמרות כאשר שמירת הערות רישיון מופעלת.
מתי לא לכווץ ידנית
אם הפרויקט שלכם כבר משתמש ב-bundler, תנו לו לכווץ את ה-builds לפרודקשן ולייצר source maps לדיבאג. מכווץ אונליין אידיאלי לסקריפטים חד-פעמיים, לקטעי קוד ל-CMS או ל-tag manager, ל-bookmarklets ולבדיקה כמה קטן קטע קוד יכול להיות.
שאלות נפוצות
האם הקוד שלי מועלה לשרת?
האם כיווץ יכול לשבור את הקוד שלי?
Function.prototype.toString() או על שמות משתנים מקומיים דרך eval עלול להיפגע; במקרה כזה כבו את קיצור שמות.