JavaScript مِنی فائر

استعمال کا طریقہ 3 مراحل
  1. JavaScript سورس کوڈ پیسٹ کریں میں اپنی اسکرپٹ چسپاں کریں۔
  2. JS کوڈ minify کریں دبائیں۔
  3. چھوٹا کوڈ کاپی کریں اور لگانے سے پہلے جانچ لیں۔
Minify شدہ JS نتیجہ

یہ ٹول کیسے کام کرتا ہے

یہ تبصرے اور غیر ضروری خالی جگہ ہٹاتا ہے، اور اس کے سوا کچھ نہیں۔ یہ سورس پر چلتے ہوئے سٹرنگز، ٹیمپلیٹ لٹرلز، ریگولر ایکسپریشن لٹرلز اور تبصرے کی دونوں صورتوں کا حساب رکھتا ہے، اس لیے تبصرہ صرف وہیں ہٹتا ہے جہاں وہ واقعی تبصرہ ہو — سٹرنگ یا ریگولر ایکسپریشن کے اندر کی دوہری سلیش جوں کی توں رہتی ہے، اور یہی چلتے ہوئے کوڈ اور ٹوٹی ہوئی فائل کے درمیان فرق ہے۔

نئی سطریں جان بوجھ کر رکھی جاتی ہیں۔ JavaScript کچھ شرائط کے تحت سطری ٹوٹ پر سیمی کولن خود شامل کر دیتا ہے، اس لیے بغیر سیمی کولن لکھے ہوئے کوڈ کا مطلب بدل جاتا ہے اگر اس کی نئی سطریں سمیٹ دی جائیں۔ انہیں رکھنے کی قیمت تھوڑا سا حجم ہے اور فائدہ ناکامی کی ایک پوری قسم کا خاتمہ۔ علامتِ استعجاب سے شروع ہونے والے تبصرے محفوظ رہتے ہیں، کیونکہ لائسنس کی سرخی کے لیے یہی روایت ہے۔

حد، صاف الفاظ میں

  • کسی چیز کا نام نہیں بدلا جاتا: اصل minifier متغیروں کے نام چھوٹے کرتا ہے، اور پروڈکشن بنڈل میں زیادہ تر بچت وہیں سے آتی ہے۔ اسے محفوظ طریقے سے کرنے کے لیے پورا پارسر اور دائرہ کار کا ماڈل درکار ہے، اور اس میں معمولی سی غلطی ایسی فائل دیتی ہے جو یہاں نہیں بلکہ پروڈکشن میں ناکام ہوتی ہے۔
  • نہ مردہ کوڈ ہٹتا ہے نہ کوئی اظہار دوبارہ لکھا جاتا ہے: نتیجہ آپ کا اپنا کوڈ ہے، تبصروں اور وقفہ بندی کے بغیر۔ مفید کمی کی توقع رکھیں، وہ تناسب نہیں جو کوئی بلڈ ٹول حاصل کرتا ہے۔
  • اصل بلڈ کے لیے اصل بنڈلر استعمال کریں: esbuild، terser یا SWC نام بدلنے اور غیر استعمال شدہ کوڈ نکالنے کا کام کرتے ہیں۔ یہ کسی ٹکڑے، اندرونی اسکرپٹ یا ایسی فائل کے لیے ہے جس کا کوئی بلڈ مرحلہ نہ ہو۔
  • ابہام پر جان بوجھ کر محتاط: سلیش ریگولر ایکسپریشن شروع کرتی ہے یا تقسیم کرتی ہے، یہ بغیر پارس کیے طے نہیں ہو سکتا۔ یہاں کا اندازہ ان صورتوں کے لیے درست ہے جو عملاً پیش آتی ہیں، اور جہاں یقین نہ ہو وہاں کوڈ جوں کا توں چھوڑ دیا جاتا ہے۔

What it actually removes: comments and whitespace, nothing more

The [msm_tool slug="js-minifier"] walks the source tracking strings, template literals, regular expression literals and both comment forms, so a double slash sitting inside a string or a regular expression is left alone rather than mistaken for the start of a comment. That distinction is the difference between a working file and one where `"https://example.com"` loses everything after the second slash.

Newlines stay, on purpose

JavaScript inserts semicolons at line breaks under certain conditions, so code written without terminating semicolons changes meaning the moment its newlines are collapsed away. Keeping every line break costs a little size and removes an entire category of failure that a naive whitespace collapse would otherwise introduce.

Licence comments are recognised, not just kept by accident

A comment beginning with an exclamation mark is preserved specifically, since that is the established convention for a licence header. Every other comment is removed, but this one exception exists because stripping a required licence notice is a different kind of mistake from stripping an ordinary code comment.

Where the ambiguous slash is handled conservatively

Whether a slash begins a regular expression or performs division cannot be decided with certainty without actually parsing the surrounding code. The heuristic used here is correct for the forms that show up in practice, and wherever it is genuinely unsure, it leaves the code exactly as written rather than guessing and risking a break.

Nothing is renamed, and that is most of the missing saving

A real production minifier shortens variable and function names, which is where most of the size reduction in a built bundle actually comes from — and doing that safely needs a full parser and a scope model, since getting it subtly wrong produces code that fails only after it ships. This tool does not attempt it, so the reduction here is real but modest: comments and indentation gone, nothing structural changed.

Where a real build tool is the right choice instead

Anything with an actual build step is better served by esbuild, Terser or SWC, which perform the renaming and dead-code elimination this deliberately does not. This is built for the opposite case: a standalone snippet, an inline script, or a file with no build pipeline behind it at all.

اکثر پوچھے گئے سوالات

خاص طور پر JavaScript مِنی فائر کے بارے میں۔ اس زمرے سے متعلق عمومی سوالات کے جواب زمرے کے صفحے پر موجود ہیں۔

کیونکہ صرف تبصرے اور خالی جگہ ہٹتی ہے۔ پروڈکشن بنڈل میں زیادہ تر بچت متغیروں کے نام بدلنے سے آتی ہے، جس کے لیے پورا پارسر چاہیے اور وہ یہاں نہیں ہوتا۔
ایسا نہیں ہونا چاہیے۔ سٹرنگز، ٹیمپلیٹ لٹرلز اور ریگولر ایکسپریشن پہچانے اور برقرار رکھے جاتے ہیں، اور نئی سطریں رکھی جاتی ہیں تاکہ خودکار سیمی کولن کا اضافہ چلتا رہے۔
جان بوجھ کر۔ JavaScript کچھ جگہوں پر سطری ٹوٹ پر سیمی کولن شامل کر دیتا ہے، اس لیے انہیں سمیٹنا بغیر سیمی کولن والے کوڈ کا مطلب بدل دیتا ہے۔
نہیں۔ علامتِ استعجاب سے شروع ہونے والا تبصرہ محفوظ رہتا ہے، جو لائسنس کی سرخی کے لیے عام روایت ہے۔
جہاں بلڈ مرحلہ موجود ہو، وہاں نہیں۔ esbuild یا terser استعمال کریں، جو نام بدلتے اور غیر استعمال شدہ کوڈ نکالتے ہیں۔ یہ کسی ٹکڑے یا اندرونی اسکرپٹ کے لیے ہے۔

نئے ٹولز، خصوصیات اور کارکردگی بڑھانے کے مشوروں کی اطلاع پانے کے لیے سبسکرائب کریں۔