ถ้ายังใช้ lodash อยู่ - ลดขนาดบันเดิลได้ 97% ด้วยการแก้ `package.json` แค่บรรทัดเดียว (es-toolkit)
(toss.tech)บทความนี้สรุปเส้นทางของ es-toolkit ไลบรารียูทิลิตี JavaScript ที่มาแทน lodash ซึ่งสร้างโดยทีมฟรอนต์เอนด์ของ Toss จนมียอดดาวน์โหลดบน npm รายสัปดาห์ทะลุ 10 ล้านครั้ง
- เริ่มต้นจากคำถามในปี 2024 ว่า “เคยมี JS library จากเกาหลีที่ถูกใช้งานในระดับโลกบ้างไหม?”
- หลังจาก
lodashถูกออกแบบมาเมื่อ 10 ปีก่อน สภาพแวดล้อมอย่าง ES Modules, tree shaking, การปรับแต่งประสิทธิภาพของ V8 engine, TypeScript ฯลฯ เปลี่ยนไปมาก แต่โครงสร้างยังคงเดิม จึงมองว่านี่เป็นโอกาสในการออกแบบใหม่ทั้งหมดตั้งแต่ต้น - เมื่อเทียบกับ
lodashขนาดบันเดิลลดลงได้สูงสุด 97%, ประสิทธิภาพรันไทม์ดีขึ้น 2~3 เท่า, และมี test coverage 100% - ตัวอย่าง: เมื่อดูจาก 5 ฟังก์ชันคือ
groupBy,keyBy,pick,omit,debounceทางlodash-esมีขนาดประมาณ ~30KB ส่วนes-toolkitอยู่ที่ประมาณ ~1KB - ผ่าน
es-toolkit/compatสามารถแทนที่แบบ drop-in ที่เข้ากันได้กับlodash100% เพียงเปลี่ยนบรรทัดเดียวในpackage.jsonเป็น"lodash": "npm:es-toolkit@^1.44.0"ก็สลับได้โดยไม่ต้องแก้โค้ด - Microsoft, Yarn, Storybook, IBM, Recharts, Ink ฯลฯ นำไปใช้งานด้วยความสมัครใจ และล่าสุด Dify ก็เริ่มย้ายจาก
lodashมาแล้ว - เติบโตอย่างต่อเนื่องโดยไม่มีไวรัลโมเมนต์: 100K → 500K → 1M → 5M → 10M
- คณะกรรมการโอเพนซอร์สของ Toss ก็กำลังพัฒนาไลบรารีอื่น ๆ ร่วมด้วย เช่น
overlay-kit,use-funnel,suspensive
2 ความคิดเห็น
อืม..
ปกติก็คงใช้
lodash-esกัน แต่ถ้าเป็นของเกาหลีและเข้ากันได้ 100% ก็น่าลองใช้ดูเหมือนกันนะแต่ช่วงนี้ไม่ได้ใช้ lodash มานานแค่ไหนแล้วนะ...