ทำอะไรได้
การย่อโค้ด (minification) ลบทุกอย่างที่เบราว์เซอร์ไม่จำเป็นต้องใช้ในการรันโค้ด ได้แก่ ช่องว่าง การขึ้นบรรทัดใหม่ คอมเมนต์ และชื่อยาว ๆ ไฟล์ที่เล็กลงดาวน์โหลดได้เร็วขึ้น ช่วยปรับปรุงเวลาโหลดหน้าเว็บและ Core Web Vitals โดยเฉพาะบนเครือข่ายมือถือ
เครื่องมือนี้ย่อ JavaScript ด้วย Terser ซึ่งเป็นตัวย่อที่ webpack, Rollup และ Vite ใช้ และย่อ CSS ด้วย CSSO ซึ่งยังปรับโครงสร้างสไตล์ชีตด้วย: ย่อสี (#ffffff เป็น #fff) ลบหน่วยและค่าที่ซ้ำซ้อน (0px 0px เป็น 0) และรวมกฎที่ใช้ selector หรือ declaration ร่วมกัน
วิธีใช้งาน
- วางโค้ดลงในช่อง อินพุต ลากไฟล์
.jsหรือ.cssมาวาง หรือคลิก ตัวอย่าง - เลือก JavaScript หรือ CSS
- สำหรับ JavaScript ย่อชื่อตัวแปร จะเปลี่ยนชื่อตัวแปรภายในและพารามิเตอร์เป็นตัวอักษรเดียว ชื่อที่ export และชื่อ global จะไม่ถูกเปลี่ยนเลย
- สำหรับ CSS รวมกฎที่ซ้ำกัน จะรวมกฎที่มี declaration เดียวกัน
- คัดลอกผลลัพธ์หรือดาวน์โหลด ตัวนับขนาดใต้แต่ละช่องจะแสดงว่าคุณประหยัดได้เท่าไร
หาก JavaScript มี syntax error ข้อความแสดงข้อผิดพลาดจะบอกบรรทัดและคอลัมน์ ให้คุณกระโดดไปที่จุดนั้นได้
ตัวอย่าง
// Sum the price of every item
export function cartTotal(items, discountPercent = 0) {
const subtotal = items.reduce(function (sum, item) {
return sum + item.price * item.quantity
}, 0)
return subtotal * (1 - discountPercent / 100)
}
จะกลายเป็น
export function cartTotal(t,r=0){return t.reduce(function(t,r){return t+r.price*r.quantity},0)*(1-r/100)}
เมื่อไรควรใช้
ใช้สำหรับงานเร็ว ๆ ครั้งเดียว: โค้ดสำหรับ CDN, inline script ในอีเมล HTML, bookmarklet หรือเพื่อดูว่าไลบรารีจะเล็กได้แค่ไหน ในโปรเจกต์จริง bundler ของคุณควรย่อโค้ดในทุกการ build เพื่อให้ซอร์สโค้ดยังอ่านง่าย
คำถามที่พบบ่อย
› โค้ดของฉันถูกอัปโหลดไปที่ไหนหรือไม่?
ไม่ Terser และ CSSO ทำงานในเบราว์เซอร์ของคุณ ซอร์สโค้ดที่เป็นกรรมสิทธิ์จึงไม่ออกจากอุปกรณ์ของคุณ
› การย่อโค้ดจะทำให้ JavaScript พังหรือไม่?
Terser ใช้เฉพาะการแปลงที่คงพฤติกรรมเดิมสำหรับโค้ดที่ถูกต้อง โค้ดที่พึ่งชื่อฟังก์ชันหรือตัวแปรขณะรัน (เช่น ผ่าน Function.name) อาจได้รับผลกระทบจากการย่อชื่อ ในกรณีนั้นให้ปิด "ย่อชื่อตัวแปร"
› ทำไม "รวมกฎที่ซ้ำกัน" เป็นตัวเลือกสำหรับ CSS?
การรวมจะย้าย declaration ระหว่างกฎ ซึ่งปลอดภัยในสไตล์ชีตเกือบทั้งหมด แต่หาก CSS ของคุณพึ่งลำดับที่แน่นอนของกฎที่มี specificity เท่ากัน การปิดตัวเลือกนี้รับประกันว่าลำดับเดิมจะคงอยู่
› คอมเมนต์ใดบ้างที่ถูกเก็บไว้?
เมื่อเปิด "เก็บคอมเมนต์ไลเซนส์" คอมเมนต์ที่ขึ้นต้นด้วย /*! หรือมี @license หรือ @preserve จะคงอยู่ ตามที่ไลเซนส์โอเพนซอร์สส่วนใหญ่กำหนด คอมเมนต์อื่นทั้งหมดจะถูกลบ