Skip to content

วิธีการทำงาน?

วิธีการที่ไร้รอยต่อของ Volta ในการจัดการเครื่องมือ JavaScript อาศัยสถาปัตยกรรมที่ชาญฉลาดซึ่งทำงานเบื้องหลัง นี่คือคำอธิบายเกี่ยวกับวิธีการที่ Volta ทำงานอย่างน่าอัศจรรย์:

สถาปัตยกรรม Shim

ที่ใจกลางของ Volta คือสถาปัตยกรรม "shim" ที่ดักคำสั่งและส่งต่อไปยังเวอร์ชันเครื่องมือที่เหมาะสม:

  1. เมื่อคุณติดตั้ง Volta จะเพิ่มโฟลเดอร์ลงในตัวแปรสภาพแวดล้อม PATH ของคุณ (ปกติคือ ~/.volta/bin บนระบบ Unix หรือ %USERPROFILE%\.volta\bin บน Windows)
  2. โฟลเดอร์นี้มี shims ที่เรียกใช้ได้ขนาดเล็กสำหรับเครื่องมือทั่วไปเช่น node, npm และ yarn
  3. เมื่อคุณเรียกคำสั่งเช่น node ระบบจะพบ shim ของ Volta ก่อนใน PATH ของคุณ
  4. Shim จะกำหนดว่าควรใช้เวอร์ชันเครื่องมือใดตามโฟลเดอร์ปัจจุบันของคุณ
  5. Volta จะดำเนินการเวอร์ชันที่ถูกต้องของเครื่องมือด้วยอาร์กิวเมนต์คำสั่งเดิมของคุณ

สถาปัตยกรรมนี้ช่วยให้ Volta สลับระหว่างเวอร์ชันเครื่องมือได้อย่างโปร่งใส โดยไม่ต้องให้คุณเรียกคำสั่งพิเศษ

การตรวจจับโปรเจกต์

เมื่อคุณเรียกคำสั่งในโฟลเดอร์โปรเจกต์ Volta จะกำหนดเวอร์ชันเครื่องมือที่จะใช้โดยอัตโนมัติ:

  1. Volta จะค้นหาไฟล์ package.json ในโฟลเดอร์ปัจจุบันของคุณ
  2. หากพบ จะตรวจสอบส่วน volta ที่ระบุเวอร์ชันเครื่องมือ
  3. หากไม่พบ package.json Volta จะค้นหาโฟลเดอร์แม่จนกว่าจะพบ
  4. หากไม่พบการกำหนดค่าโปรเจกต์ Volta จะใช้เวอร์ชันเครื่องมือเริ่มต้นของคุณ

การตรวจจับโปรเจกต์นี้เกิดขึ้นทันทีและโปร่งใส ช่วยให้คุณสลับระหว่างโปรเจกต์ได้โดยไม่ต้องมีการแทรกแซงด้วยตนเอง

การติดตั้งและจัดการเครื่องมือ

เมื่อคุณติดตั้งเครื่องมือด้วย Volta เครื่องมือจะถูกเก็บไว้ในตำแหน่งกลาง:

~/.volta/
├── bin/           # มี shims
├── tools/
│   ├── node/      # การติดตั้ง Node.js
│   ├── npm/       # การติดตั้ง npm
│   ├── yarn/      # การติดตั้ง Yarn
│   └── image/     # ไบนารีของแพ็กเกจ
└── ...

โครงสร้างนี้ช่วยให้ Volta:

  1. เก็บหลายเวอร์ชันของเครื่องมือแต่ละตัวที่ติดตั้งพร้อมกัน
  2. สลับระหว่างเวอร์ชันได้ทันทีโดยไม่ต้องติดตั้งใหม่
  3. แชร์การติดตั้งข้ามโปรเจกต์ทั้งหมดของคุณ
  4. รักษาการแยกที่สะอาดระหว่างเครื่องมือและเวอร์ชันที่แตกต่างกัน

การจัดการแพ็กเกจทั่วโลก

การจัดการแพ็กเกจทั่วโลกของ Volta นั้นมีความคิดสร้างสรรค์เป็นพิเศษ:

  1. เมื่อคุณติดตั้งแพ็กเกจทั่วโลก (เช่น npm install -g typescript) Volta:

    • ติดตั้งแพ็กเกจโดยใช้เวอร์ชัน Node.js เริ่มต้นของคุณ
    • สร้าง shim สำหรับไบนารีของแพ็กเกจใน ~/.volta/bin
    • บันทึกเวอร์ชัน Node.js ที่ติดตั้งแพ็กเกจด้วย
  2. เมื่อคุณเรียกใช้ไบนารีของแพ็กเกจ (เช่น tsc):

    • Shim ของ Volta จะดักคำสั่ง
    • ใช้เวอร์ชัน Node.js ที่บันทึกไว้เพื่อเรียกใช้ไบนารี
    • สิ่งนี้เกิดขึ้นโดยไม่คำนึงว่าโปรเจกต์ปัจจุบันของคุณใช้เวอร์ชัน Node.js ใด

วิธีการนี้ให้คุณความสะดวกของการติดตั้งแพ็กเกจทั่วโลกโดยไม่มีปัญหาทั่วไปของความขัดแย้งของเวอร์ชัน

การใช้งานเฉพาะแพลตฟอร์ม

Volta ถูกใช้งานแตกต่างกันในแต่ละแพลตฟอร์มเพื่อให้ประสบการณ์ native ที่ดีที่สุด:

  • ระบบ Unix (macOS, Linux): ใช้ shims ที่เรียกใช้ได้และการแก้ไขโปรไฟล์เชลล์
  • Windows: ใช้ shims ที่เรียกใช้ได้และแก้ไขตัวแปรสภาพแวดล้อม Path ของผู้ใช้

ในทุกกรณี Volta ถูกออกแบบมาเพื่อผสานรวมกับสภาพแวดล้อมและเครื่องมือที่มีอยู่ของคุณอย่างราบรื่น

ข้อควรพิจารณาเกี่ยวกับประสิทธิภาพ

Volta ถูกสร้างโดยคำนึงถึงประสิทธิภาพ:

  1. เขียนด้วย Rust สำหรับความเร็วและความน่าเชื่อถือ
  2. Shims เพิ่มโอเวอร์เฮดต่ำที่สุดต่อการเรียกใช้คำสั่ง
  3. การสลับเครื่องมือเกิดขึ้นทันที
  4. ไม่ต้องโหลดเชลล์ใหม่เมื่อเปลี่ยนเวอร์ชัน

การมุ่งเน้นประสิทธิภาพนี้หมายความว่าคุณสามารถใช้ Volta ได้โดยไม่ต้องสังเกตเห็นความช้าใดๆ ในขั้นตอนการทำงานการพัฒนาของคุณ

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

Released under the BSD 2-Clause License.