การสลับระหว่างโปรเจกต์
หนึ่งในประโยชน์หลักของ Volta คือการจัดการเวอร์ชันเครื่องมือที่แตกต่างกันข้ามโปรเจกต์อย่างราบรื่น หน้านี้อธิบายว่า Volta จัดการสภาพแวดล้อม JavaScript ของคุณโดยอัตโนมัติอย่างไรเมื่อคุณย้ายระหว่างโปรเจกต์
การสลับเวอร์ชันอัตโนมัติ
ไม่เหมือนกับตัวจัดการเวอร์ชันอื่นๆ ที่ต้องการให้คุณสลับระหว่างเวอร์ชันเครื่องมือด้วยตนเอง Volta จัดการสิ่งนี้โดยอัตโนมัติตามโฟลเดอร์ปัจจุบันของคุณ
วิธีการทำงาน
- เมื่อคุณเรียกคำสั่ง JavaScript (เช่น
node,npmหรือแพ็กเกจ binary) shim ของ Volta จะดักคำสั่ง - Volta ตรวจสอบโฟลเดอร์ปัจจุบันของคุณเพื่อดูว่าคุณอยู่ในโปรเจกต์ที่มีเวอร์ชันเครื่องมือปักหมุดหรือไม่
- หากคุณอยู่ Volta จะใช้เวอร์ชันที่ปักหมุดจาก
package.jsonของโปรเจกต์นั้น - หากคุณไม่ได้อยู่ในโปรเจกต์ที่มีเวอร์ชันปักหมุด Volta จะใช้เครื่องมือเริ่มต้นของคุณ
ทั้งหมดนี้เกิดขึ้นอย่างโปร่งใสโดยไม่ต้องมีคำสั่งเพิ่มเติม
ตัวอย่างขั้นตอนการทำงาน
ลองนึกภาพว่าคุณมีสองโปรเจกต์ที่มีความต้องการ Node.js ต่างกัน:
โปรเจกต์ A (~/projects/project-a/package.json):
{
"volta": {
"node": "14.19.1",
"npm": "6.14.16"
}
}โปรเจกต์ B (~/projects/project-b/package.json):
{
"volta": {
"node": "16.14.2",
"npm": "8.5.0"
}
}ขั้นตอนการทำงานของคุณอาจเป็นดังนี้:
# ในโปรเจกต์ A
cd ~/projects/project-a
node --version # แสดง v14.19.1
npm --version # แสดง v6.14.16
# สลับไปยังโปรเจกต์ B
cd ~/projects/project-b
node --version # แสดง v16.14.2 โดยอัตโนมัติ
npm --version # แสดง v8.5.0 โดยอัตโนมัติ
# ภายนอกโปรเจกต์ใดๆ
cd ~
node --version # แสดงเวอร์ชัน Node เริ่มต้นของคุณโปรเจกต์แบบซ้อน
หากคุณมีโปรเจกต์แบบซ้อน Volta จะใช้เวอร์ชันเครื่องมือจาก package.json ที่ใกล้ที่สุดที่มีส่วน volta
ตัวอย่างเช่น:
/parent-project/package.json (มีส่วน volta พร้อม node@14)
/parent-project/child-project/package.json (มีส่วน volta พร้อม node@16)
/parent-project/other-directory/ (ไม่มี package.json)หากคุณเรียกคำสั่งใน:
/parent-project/child-project/- Volta ใช้ Node.js 16/parent-project/other-directory/- Volta ใช้ Node.js 14/parent-project/- Volta ใช้ Node.js 14
ไบนารีแพ็กเกจ
การสลับอัตโนมัติของ Volta ยังใช้กับไบนารีแพ็กเกจด้วย ตัวอย่างเช่น หากคุณมีเวอร์ชัน TypeScript เฉพาะโปรเจกต์และเรียก tsc Volta ตรวจสอบให้แน่ใจว่าใช้เวอร์ชันที่ถูกต้อง
แพ็กเกจทั่วโลก vs ท้องถิ่น
เมื่อคุณเรียกใช้ไบนารีแพ็กเกจ:
- หากไบนารีมีอยู่ใน
node_modules/.bin/ของโปรเจกต์ของคุณ Volta จะใช้เวอร์ชันนั้น - หากไม่มี แต่แพ็กเกจถูกติดตั้งทั่วโลกผ่าน Volta จะใช้เวอร์ชันนั้น
- มิฉะนั้น จะแสดงข้อผิดพลาดว่าไม่พบคำสั่ง
การแก้ไขปัญหา
หากคุณพบปัญหากับการสลับเวอร์ชัน:
- ตรวจสอบว่าโปรเจกต์ของคุณมีส่วน
voltaในpackage.json - เรียก
volta list allเพื่อตรวจสอบเครื่องมือที่ติดตั้งของคุณ - ตรวจสอบว่าเครื่องมือที่คุณต้องการถูกปักหมุดกับโปรเจกต์ของคุณหรือติดตั้งเป็นเวอร์ชันเริ่มต้น
- เรียก
volta which nodeเพื่อดูว่า Volta ใช้เวอร์ชัน Node.js ใดและทำไม