Bun 1.2.19 เปิดตัวการติดตั้งแพ็กเกจแบบแยกส่วนเพื่อประสิทธิภาพที่เร็วขึ้น 10 เท่าบน Windows

ทีมชุมชน BigGo
Bun 1.2.19 เปิดตัวการติดตั้งแพ็กเกจแบบแยกส่วนเพื่อประสิทธิภาพที่เร็วขึ้น 10 เท่าบน Windows

การอัปเดตล่าสุดของ Bun นำมาซึ่งฟีเจอร์ที่เปลี่ยนเกมส์ซึ่งสัญญาว่าจะปฏิวัติวิธีการติดตั้งแพ็กเกจ JavaScript โดยเฉพาะสำหรับผู้ใช้ Windows ตัว isolated node linker ใหม่ที่ได้แรงบันดาลใจจากแนวทางของ pnpm กำหนดจะเปิดตัวพร้อมกับ Bun v1.2.19 และแก้ไขปัญหาที่มีมานานเกี่ยวกับการจัดการ dependency พร้อมทั้งมอบผลตอบแทนด้านประสิทธิภาพที่น่าประทับใจ

การเพิ่มประสิทธิภาพอย่างมหาศาลบน Windows

โหมดการติดตั้งแบบแยกส่วนมอบการปรับปรุงความเร็วที่น่าทึ่ง โดยเฉพาะบนระบบ Windows ที่ผู้ใช้สามารถคาดหวังการติดตั้งแพ็กเกจที่เร็วขึ้น 10 ถึง 20 เท่า ในขณะที่ผู้ใช้ macOS และ Linux จะเห็นการปรับปรุงที่เจียมเนื้อเจียมตัวกว่า แต่ผลกระทบด้านประสิทธิภาพยังคงเป็นบวกในทุกแพลตฟอร์ม การปรับปรุงที่สำคัญนี้ทำให้ Bun เป็นตัวเลือกที่น่าสนใจยิ่งขึ้นสำหรับนักพัฒนาที่ทำงานในสภาพแวดล้อมแพลตฟอร์มผสม

การปรับปรุงประสิทธิภาพ:

  • Windows : การติดตั้งเร็วขึ้น 10 ถึง 20 เท่า
  • macOS / Linux : ผลกระทบต่อประสิทธิภาพในทางบวกเล็กน้อยหรือเป็นกลาง

ความน่าเชื่อถือที่เพิ่มขึ้นสำหรับ Monorepos

นอกเหนือจากความเร็วแล้ว isolated linker ยังจัดการกับปัญหาความน่าเชื่อถือที่สำคัญซึ่งได้รบกวนการจัดการแพ็กเกจ JavaScript ด้วยการป้องกัน phantom dependencies และ dangling symlinks ฟีเจอร์นี้ทำให้การติดตั้ง Bun เชื่อถือได้มากขึ้นในสภาพแวดล้อม monorepo ระบบนี้รับประกันว่า dependencies สามารถเข้าถึงเฉพาะเวอร์ชันของแพ็กเกจอื่นๆ ที่ระบุไว้อย่างชัดเจนในไฟล์ package.json ของตัวเอง ซึ่งช่วยขจัดข้อผิดพลาดรันไทม์ที่ลึกลับซึ่งเกิดจากการแก้ไข dependency แบบโดยนัย

Phantom dependencies: แพ็กเกจที่ทำงานในการพัฒนาแต่ไม่ได้ประกาศอย่างชัดเจนเป็น dependenciesDangling symlinks: symbolic links ที่เสียหายซึ่งชี้ไปยังไฟล์หรือไดเรกทอรีที่ไม่มีอยู่

โครงสร้างไดเรกทอรี:

node_modules/
├── .modules.yaml
├── [email protected]/
│   └── node_modules/
│       └── [email protected]
└── my-dependency -> .modules/[email protected]/

การดึงดูดใจของระบบนิเวศที่เติบโต

ข้อเสนอแนะจากชุมชนเผยให้เห็นบทบาทที่ขยายตัวของ Bun นอกเหนือจากการจัดการแพ็กเกจเท่านั้น นักพัฒนากำลังนำ Bun มาใช้มากขึ้นสำหรับ shell scripting การดำเนินการฐานข้อมูล และสคริปต์ยูทิลิตี้ โดยชื่นชมฟีเจอร์ในตัวเช่นการสนับสนุน SQLite และฟังก์ชัน S3 client ความหลากหลายนี้ทำให้ Bun อยู่ในตำแหน่งของ JavaScript runtime ที่ครอบคลุมมากกว่าเป็นเพียงตัวจัดการแพ็กเกจอีกตัวหนึ่ง

Bun กำลังค่อยๆ กลายเป็นโซลูชันครบเครื่องสำหรับระบบนิเวศ js

Isolated linker เป็นอีกก้าวหนึ่งสู่แนวทางแบบรวมศูนย์นี้ โดยเสนอทางเลือกที่เชื่อถือได้และเร็วกว่าการติดตั้ง npm แบบดั้งเดิมให้กับนักพัฒนา ในขณะที่ยังคงความเข้ากันได้กับเวิร์กโฟลว์ที่มีอยู่

ฟีเจอร์ที่รองรับ:

  • การติดตั้ง dependency เดี่ยวขั้นพื้นฐาน
  • แพ็กเกจแบบ scoped (@types/*)
  • Transitive dependencies
  • Cyclic dependencies
  • Folder dependencies
  • การรองรับ workspace
  • การตรวจสอบโครงสร้าง symlink

ข้อจำกัดปัจจุบันและมุมมองอนาคต

แม้ว่าฟีเจอร์นี้จะพร้อมสำหรับการทดสอบผ่านช่องทาง canary release แต่ปัจจุบันมีบั๊กเฉพาะ Windows ที่ป้องกันไม่ให้ทีม Bun ใช้การติดตั้งแบบแยกส่วนในรีโพซิทอรีของตัวเอง ปัญหานี้ต้องได้รับการแก้ไขก่อนการเปิดตัวเวอร์ชันเสถียร แม้ว่าผู้ใช้งานแรกๆ สามารถทดลองใช้ฟีเจอร์นี้ได้โดยใช้ bun install --linker=isolated หรือโดยการกำหนดค่าในไฟล์ bunfig.toml ของพวกเขา

การใช้งานนี้รองรับสถานการณ์การจัดการแพ็กเกจหลักทั้งหมด รวมถึง scoped packages, peer dependencies, workspaces และแม้แต่ dependency cycles ที่ซับซ้อน ทำให้เป็นโซลูชันที่แข็งแกร่งสำหรับสภาพแวดล้อมการพัฒนาในโลกแห่งความเป็นจริง

อ้างอิง: implement nodeLinker: isolated in bun install #20440