JavaScript Minifier (ย่อโค้ด JS)

วาง JavaScript เพื่อย่อด้วย Terser: โค้ดที่ไม่ได้ใช้ถูกลบ ชื่อถูกย่อให้สั้น และช่องว่างหายไป ข้อผิดพลาดทางไวยากรณ์จะชี้ไปที่บรรทัดและคอลัมน์ที่แน่นอน

ทำงานในเบราว์เซอร์ไม่ต้องสมัครไม่มีการอัปโหลด

ผลลัพธ์ที่ย่อแล้ว

วิธีใช้ JavaScript Minifier

  1. วาง JavaScript ของคุณหรือเปิดไฟล์ .js
  2. เลือกตัวเลือก: ย่อชื่อตัวแปร ทำให้ตัวแปรภายในสั้นลง บีบอัด เขียนโค้ดใหม่ให้เล็กลงแต่ทำงานเหมือนเดิม ES module เปิดใช้ import/export ระดับบนสุด
  3. เลือก ECMAScript target ที่เบราว์เซอร์ของผู้ใช้รองรับ ES2020 ปลอดภัยสำหรับเบราว์เซอร์ evergreen ทั้งหมด
  4. ดูขนาด ส่วนที่ประหยัดได้ และขนาด gzip โดยประมาณใต้ผลลัพธ์
  5. คัดลอกโค้ดที่ย่อแล้วหรือดาวน์โหลดเป็น output.min.js

JavaScript minifier ทำอะไร?

การย่อทำให้ JavaScript เล็กลงโดยไม่เปลี่ยนการทำงาน เครื่องมือนี้ใช้ Terser ซึ่งเป็นตัวย่อเบื้องหลัง webpack, Vite และ Rollup และทำการเปลี่ยนแปลงสามแบบ:

  • ลบช่องว่างและคอมเมนต์: การเยื้อง การขึ้นบรรทัด และคอมเมนต์ไม่จำเป็นสำหรับ JavaScript engine
  • Mangling: ชื่อตัวแปรภายในและพารามิเตอร์ของฟังก์ชัน เช่น subtotal จะกลายเป็นตัวอักษรเดียว ชื่อ global และ property ของ object จะไม่ถูกแตะต้อง public API ของคุณจึงยังทำงานได้
  • การบีบอัด: นิพจน์ค่าคงที่ถูกคำนวณล่วงหน้า โค้ดที่ไม่มีวันถูกเรียกถูกลบ คำสั่ง if กลายเป็น ternary และฟังก์ชันสั้น ๆ ถูก inline

ย่อ vs. gzip: ต้องใช้ทั้งสองอย่างหรือไม่?

ใช่ Gzip และ Brotli บีบอัดรูปแบบไบต์ที่ซ้ำกันระหว่างการส่งผ่านเครือข่าย ส่วนการย่อจะลบไบต์ที่เบราว์เซอร์ต้องดาวน์โหลด พาร์ส และคอมไพล์ สคริปต์ทั่วไปเล็กลง 40–60% จากการย่อ และอีก 60–70% จาก gzip ขนาด gzip ที่แสดงที่นี่เป็นค่าประมาณที่ดีของสิ่งที่เซิร์ฟเวอร์จะส่งจริง

การเก็บคอมเมนต์ลิขสิทธิ์

ไลเซนส์โอเพนซอร์สหลายแบบ (MIT, BSD, Apache) กำหนดให้ประกาศลิขสิทธิ์ต้องอยู่กับโค้ด ตามธรรมเนียม คอมเมนต์ที่ขึ้นต้นด้วย /*! หรือมี @license หรือ @preserve จะถูกเก็บไว้เมื่อเปิด เก็บคอมเมนต์ลิขสิทธิ์

เมื่อใดไม่ควรย่อเอง

หากโปรเจกต์ของคุณใช้ bundler อยู่แล้ว ให้ bundler ย่อ production build และสร้าง source map สำหรับดีบัก ตัวย่อออนไลน์เหมาะสำหรับสคริปต์ใช้ครั้งเดียว โค้ดสั้น ๆ สำหรับ CMS หรือ tag manager, bookmarklet และการดูว่าโค้ดชิ้นหนึ่งเล็กลงได้แค่ไหน

คำถามที่พบบ่อย

โค้ดของฉันถูกอัปโหลดไปยังเซิร์ฟเวอร์หรือไม่?
ไม่ Terser ทำงานภายในแท็บเบราว์เซอร์ของคุณ โค้ดที่เป็นกรรมสิทธิ์จึงไม่เคยออกจากเครื่องของคุณ
การย่อทำให้โค้ดพังได้หรือไม่?
Terser ใช้เฉพาะการแปลงที่คงพฤติกรรมเดิมไว้สำหรับ JavaScript ที่ถูกต้อง โค้ดที่พึ่งพา Function.prototype.toString() หรือชื่อตัวแปรภายในผ่าน eval อาจได้รับผลกระทบ ในกรณีนั้นให้ปิด ย่อชื่อตัวแปร
รองรับไวยากรณ์สมัยใหม่ เช่น async/await, class และ optional chaining หรือไม่?
รองรับ Terser พาร์สไวยากรณ์ ES2022+ ได้ การตั้งค่า target ควบคุมเพียงว่าผลลัพธ์ใช้ไวยากรณ์ใดได้บ้าง ไม่ได้แปลงฟีเจอร์ใหม่ให้เป็นแบบเก่า
minify กับ uglify ต่างกันอย่างไร?
มีความหมายเดียวกัน UglifyJS เป็นเครื่องมือดั้งเดิม ส่วน Terser เป็น fork ที่ยังได้รับการดูแลและรองรับ ES2015+ เต็มรูปแบบ

เครื่องมือที่เกี่ยวข้อง