วิธีการทำงาน?
วิธีการที่ไร้รอยต่อของ Volta ในการจัดการเครื่องมือ JavaScript อาศัยสถาปัตยกรรมที่ชาญฉลาดซึ่งทำงานเบื้องหลัง นี่คือคำอธิบายเกี่ยวกับวิธีการที่ Volta ทำงานอย่างน่าอัศจรรย์:
สถาปัตยกรรม Shim
ที่ใจกลางของ Volta คือสถาปัตยกรรม "shim" ที่ดักคำสั่งและส่งต่อไปยังเวอร์ชันเครื่องมือที่เหมาะสม:
- เมื่อคุณติดตั้ง Volta จะเพิ่มโฟลเดอร์ลงในตัวแปรสภาพแวดล้อม
PATHของคุณ (ปกติคือ~/.volta/binบนระบบ Unix หรือ%USERPROFILE%\.volta\binบน Windows) - โฟลเดอร์นี้มี shims ที่เรียกใช้ได้ขนาดเล็กสำหรับเครื่องมือทั่วไปเช่น
node,npmและyarn - เมื่อคุณเรียกคำสั่งเช่น
nodeระบบจะพบ shim ของ Volta ก่อนในPATHของคุณ - Shim จะกำหนดว่าควรใช้เวอร์ชันเครื่องมือใดตามโฟลเดอร์ปัจจุบันของคุณ
- Volta จะดำเนินการเวอร์ชันที่ถูกต้องของเครื่องมือด้วยอาร์กิวเมนต์คำสั่งเดิมของคุณ
สถาปัตยกรรมนี้ช่วยให้ Volta สลับระหว่างเวอร์ชันเครื่องมือได้อย่างโปร่งใส โดยไม่ต้องให้คุณเรียกคำสั่งพิเศษ
การตรวจจับโปรเจกต์
เมื่อคุณเรียกคำสั่งในโฟลเดอร์โปรเจกต์ Volta จะกำหนดเวอร์ชันเครื่องมือที่จะใช้โดยอัตโนมัติ:
- Volta จะค้นหาไฟล์
package.jsonในโฟลเดอร์ปัจจุบันของคุณ - หากพบ จะตรวจสอบส่วน
voltaที่ระบุเวอร์ชันเครื่องมือ - หากไม่พบ
package.jsonVolta จะค้นหาโฟลเดอร์แม่จนกว่าจะพบ - หากไม่พบการกำหนดค่าโปรเจกต์ Volta จะใช้เวอร์ชันเครื่องมือเริ่มต้นของคุณ
การตรวจจับโปรเจกต์นี้เกิดขึ้นทันทีและโปร่งใส ช่วยให้คุณสลับระหว่างโปรเจกต์ได้โดยไม่ต้องมีการแทรกแซงด้วยตนเอง
การติดตั้งและจัดการเครื่องมือ
เมื่อคุณติดตั้งเครื่องมือด้วย Volta เครื่องมือจะถูกเก็บไว้ในตำแหน่งกลาง:
~/.volta/
├── bin/ # มี shims
├── tools/
│ ├── node/ # การติดตั้ง Node.js
│ ├── npm/ # การติดตั้ง npm
│ ├── yarn/ # การติดตั้ง Yarn
│ └── image/ # ไบนารีของแพ็กเกจ
└── ...โครงสร้างนี้ช่วยให้ Volta:
- เก็บหลายเวอร์ชันของเครื่องมือแต่ละตัวที่ติดตั้งพร้อมกัน
- สลับระหว่างเวอร์ชันได้ทันทีโดยไม่ต้องติดตั้งใหม่
- แชร์การติดตั้งข้ามโปรเจกต์ทั้งหมดของคุณ
- รักษาการแยกที่สะอาดระหว่างเครื่องมือและเวอร์ชันที่แตกต่างกัน
การจัดการแพ็กเกจทั่วโลก
การจัดการแพ็กเกจทั่วโลกของ Volta นั้นมีความคิดสร้างสรรค์เป็นพิเศษ:
เมื่อคุณติดตั้งแพ็กเกจทั่วโลก (เช่น
npm install -g typescript) Volta:- ติดตั้งแพ็กเกจโดยใช้เวอร์ชัน Node.js เริ่มต้นของคุณ
- สร้าง shim สำหรับไบนารีของแพ็กเกจใน
~/.volta/bin - บันทึกเวอร์ชัน Node.js ที่ติดตั้งแพ็กเกจด้วย
เมื่อคุณเรียกใช้ไบนารีของแพ็กเกจ (เช่น
tsc):- Shim ของ Volta จะดักคำสั่ง
- ใช้เวอร์ชัน Node.js ที่บันทึกไว้เพื่อเรียกใช้ไบนารี
- สิ่งนี้เกิดขึ้นโดยไม่คำนึงว่าโปรเจกต์ปัจจุบันของคุณใช้เวอร์ชัน Node.js ใด
วิธีการนี้ให้คุณความสะดวกของการติดตั้งแพ็กเกจทั่วโลกโดยไม่มีปัญหาทั่วไปของความขัดแย้งของเวอร์ชัน
การใช้งานเฉพาะแพลตฟอร์ม
Volta ถูกใช้งานแตกต่างกันในแต่ละแพลตฟอร์มเพื่อให้ประสบการณ์ native ที่ดีที่สุด:
- ระบบ Unix (macOS, Linux): ใช้ shims ที่เรียกใช้ได้และการแก้ไขโปรไฟล์เชลล์
- Windows: ใช้ shims ที่เรียกใช้ได้และแก้ไขตัวแปรสภาพแวดล้อม
Pathของผู้ใช้
ในทุกกรณี Volta ถูกออกแบบมาเพื่อผสานรวมกับสภาพแวดล้อมและเครื่องมือที่มีอยู่ของคุณอย่างราบรื่น
ข้อควรพิจารณาเกี่ยวกับประสิทธิภาพ
Volta ถูกสร้างโดยคำนึงถึงประสิทธิภาพ:
- เขียนด้วย Rust สำหรับความเร็วและความน่าเชื่อถือ
- Shims เพิ่มโอเวอร์เฮดต่ำที่สุดต่อการเรียกใช้คำสั่ง
- การสลับเครื่องมือเกิดขึ้นทันที
- ไม่ต้องโหลดเชลล์ใหม่เมื่อเปลี่ยนเวอร์ชัน
การมุ่งเน้นประสิทธิภาพนี้หมายความว่าคุณสามารถใช้ Volta ได้โดยไม่ต้องสังเกตเห็นความช้าใดๆ ในขั้นตอนการทำงานการพัฒนาของคุณ
ด้วยการเข้าใจว่า Volta ทำงานอย่างไรเบื้องหลัง คุณจะชื่นชมวิธีการจัดการเครื่องมือ JavaScript ที่ไร้รอยต่อของมันมากขึ้น ระบบถูกออกแบบมาเพื่อหลีกเลี่ยงทางของคุณในขณะที่ตรวจสอบให้แน่ใจว่าคุณใช้เวอร์ชันเครื่องมือที่ถูกต้องสำหรับแต่ละโปรเจกต์เสมอ