Skip to content

การสลับระหว่างโปรเจกต์

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

การสลับเวอร์ชันอัตโนมัติ

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

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

  1. เมื่อคุณเรียกคำสั่ง JavaScript (เช่น node, npm หรือแพ็กเกจ binary) shim ของ Volta จะดักคำสั่ง
  2. Volta ตรวจสอบโฟลเดอร์ปัจจุบันของคุณเพื่อดูว่าคุณอยู่ในโปรเจกต์ที่มีเวอร์ชันเครื่องมือปักหมุดหรือไม่
  3. หากคุณอยู่ Volta จะใช้เวอร์ชันที่ปักหมุดจาก package.json ของโปรเจกต์นั้น
  4. หากคุณไม่ได้อยู่ในโปรเจกต์ที่มีเวอร์ชันปักหมุด Volta จะใช้เครื่องมือเริ่มต้นของคุณ

ทั้งหมดนี้เกิดขึ้นอย่างโปร่งใสโดยไม่ต้องมีคำสั่งเพิ่มเติม

ตัวอย่างขั้นตอนการทำงาน

ลองนึกภาพว่าคุณมีสองโปรเจกต์ที่มีความต้องการ Node.js ต่างกัน:

โปรเจกต์ A (~/projects/project-a/package.json):

json
{
  "volta": {
    "node": "14.19.1",
    "npm": "6.14.16"
  }
}

โปรเจกต์ B (~/projects/project-b/package.json):

json
{
  "volta": {
    "node": "16.14.2",
    "npm": "8.5.0"
  }
}

ขั้นตอนการทำงานของคุณอาจเป็นดังนี้:

bash
# ในโปรเจกต์ 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 ท้องถิ่น

เมื่อคุณเรียกใช้ไบนารีแพ็กเกจ:

  1. หากไบนารีมีอยู่ใน node_modules/.bin/ ของโปรเจกต์ของคุณ Volta จะใช้เวอร์ชันนั้น
  2. หากไม่มี แต่แพ็กเกจถูกติดตั้งทั่วโลกผ่าน Volta จะใช้เวอร์ชันนั้น
  3. มิฉะนั้น จะแสดงข้อผิดพลาดว่าไม่พบคำสั่ง

การแก้ไขปัญหา

หากคุณพบปัญหากับการสลับเวอร์ชัน:

  • ตรวจสอบว่าโปรเจกต์ของคุณมีส่วน volta ใน package.json
  • เรียก volta list all เพื่อตรวจสอบเครื่องมือที่ติดตั้งของคุณ
  • ตรวจสอบว่าเครื่องมือที่คุณต้องการถูกปักหมุดกับโปรเจกต์ของคุณหรือติดตั้งเป็นเวอร์ชันเริ่มต้น
  • เรียก volta which node เพื่อดูว่า Volta ใช้เวอร์ชัน Node.js ใดและทำไม

Released under the BSD 2-Clause License.