Skip to content

การจัดการเวอร์ชัน Node.js

fnm มีฟีเจอร์การจัดการเวอร์ชันที่ทรงพลัง ช่วยให้สามารถสลับระหว่างหลายเวอร์ชัน Node.js ได้อย่างง่ายดาย

การดำเนินการพื้นฐาน

ดูเวอร์ชันที่ติดตั้งแล้ว

bash
fnm list

ตัวอย่างผลลัพธ์:

* v20.10.0 default
  v18.19.0
  v16.20.2
  • * บ่งชี้เวอร์ชันที่กำลังใช้
  • default บ่งชี้เวอร์ชันเริ่มต้น

ดูเวอร์ชันปัจจุบัน

bash
fnm current

สลับเวอร์ชัน

bash
# สลับไปยังเวอร์ชันเฉพาะ
fnm use 20

# สลับไปยังเวอร์ชันที่แน่นอนเฉพาะ
fnm use 20.10.0

# หากเวอร์ชันยังไม่ติดตั้ง จะติดตั้งอัตโนมัติแล้วสลับ
fnm use 18 --install-if-missing

เวอร์ชันเริ่มต้น

ตั้งค่าเวอร์ชันเริ่มต้น

bash
fnm default 20

เวอร์ชันเริ่มต้นคือ:

  • เวอร์ชันที่ใช้เมื่อเริ่มเซสชันเทอร์มินัลใหม่
  • เวอร์ชันที่ใช้เมื่อไม่มีไฟล์เวอร์ชัน

ดูเวอร์ชันเริ่มต้น

bash
fnm default

ชื่อแทนเวอร์ชัน

ชื่อแทนช่วยให้คุณตั้งค่าชื่อที่จำง่ายสำหรับเวอร์ชัน

สร้างชื่อแทน

bash
# ตั้งค่าชื่อแทนสำหรับเวอร์ชัน
fnm alias 20 default
fnm alias 18 legacy
fnm alias 16 old

ใช้ชื่อแทน

bash
# สลับเวอร์ชันผ่านชื่อแทน
fnm use default
fnm use legacy

ลบชื่อแทน

bash
fnm unalias legacy

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

fnm สามารถสลับเวอร์ชัน Node.js อัตโนมัติตามไดเรกทอรีโปรเจกต์

เปิดใช้งานการสลับอัตโนมัติ

เพิ่ม --use-on-cd ในการกำหนดค่าเชลล์:

bash
eval "$(fnm env --use-on-cd)"

สร้างไฟล์เวอร์ชัน

สร้างไฟล์ .node-version หรือ .nvmrc ในรูทของโปรเจกต์:

bash
# ใช้ .node-version (แนะนำ)
echo "20" > .node-version

# หรือใช้ .nvmrc (เข้ากันได้กับ nvm)
echo "v18.17.0" > .nvmrc

รูปแบบไฟล์เวอร์ชัน

.node-version รองรับรูปแบบต่อไปนี้:

20           # เวอร์ชันหลัก ใช้ 20.x.x ล่าสุด
20.10        # เวอร์ชันรอง ใช้ 20.10.x ล่าสุด
20.10.0      # เวอร์ชันที่แน่นอน
lts/iron     # ชื่อเวอร์ชัน LTS

กลยุทธ์การวิเคราะห์ไฟล์เวอร์ชัน

fnm รองรับกลยุทธ์การวิเคราะห์ไฟล์เวอร์ชันสองแบบ:

bash
# local (ค่าเริ่มต้น) - ค้นหาเฉพาะในไดเรกทอรีปัจจุบัน
fnm env --version-file-strategy=local

# recursive - ค้นหาไดเรกทอรีผู้ปกครองแบบวนซ้ำ
fnm env --version-file-strategy=recursive

การรองรับ engines ของ package.json

fnm สามารถอ่านฟิลด์ engines.node จาก package.json:

json
{
  "engines": {
    "node": ">=18.0.0"
  }
}

เปิดใช้งานโดยค่าเริ่มต้น สามารถปิดใช้งานผ่านตัวแปรสภาพแวดล้อม:

bash
export FNM_RESOLVE_ENGINES=false

แนวทางปฏิบัติที่ดีที่สุดในการจัดการเวอร์ชัน

1. ล็อกเวอร์ชันระดับโปรเจกต์

สร้างไฟล์ .node-version ในแต่ละโปรเจกต์:

bash
cd my-project
echo "20" > .node-version
fnm install
fnm use

2. ความร่วมมือในทีม

เพิ่ม .node-version เข้า Git:

bash
git add .node-version
git commit -m "chore: add .node-version"

3. การกำหนดค่า CI/CD

ใช้ fnm ในสภาพแวดล้อม CI/CD:

yaml
# GitHub Actions
- name: Install fnm
  run: curl -fsSL https://fnm.vercel.app/install | bash

- name: Install Node.js
  run: fnm install && fnm use

4. การพัฒนาหลายเวอร์ชัน

bash
# ติดตั้งหลายเวอร์ชัน
fnm install 20
fnm install 18
fnm install 16

# ตั้งค่าชื่อแทนเพื่อสลับอย่างง่ายดาย
fnm alias 20 current
fnm alias 18 legacy
fnm alias 16 old

# ใช้เวอร์ชันต่างๆ ในโปรเจกต์ต่างๆ
cd project-new && fnm use current
cd project-old && fnm use legacy

ถอนการติดตั้งเวอร์ชัน

bash
# ถอนการติดตั้งเวอร์ชันเฉพาะ
fnm uninstall 16.20.2

# ถอนการติดตั้งผ่านชื่อแทน (จะลบเวอร์ชันและชื่อแทนที่เกี่ยวข้องทั้งหมด)
fnm uninstall old

ปัญหาทั่วไป

คำสั่ง node ไม่อัปเดตหลังจากสลับเวอร์ชัน

ตรวจสอบให้แน่ใจว่าการกำหนดค่าเชลล์ถูกต้อง:

bash
# ตรวจสอบ path ของ node
which node

# ควรชี้ไปยังไดเรกทอรี fnm
# ~/.fnm/node-versions/.../bin/node

การสลับอัตโนมัติไม่ทำงาน

  1. ยืนยันว่าเพิ่ม --use-on-cd ในการกำหนดค่าเชลล์
  2. ยืนยันว่ามีไฟล์เวอร์ชัน
  3. โหลดการกำหนดค่าเชลล์ใหม่

ลำดับความสำคัญของไฟล์เวอร์ชัน

fnm ค้นหาเวอร์ชันตามลำดับต่อไปนี้:

  1. เวอร์ชันที่ระบุในบรรทัดคำสั่ง
  2. ไฟล์ .node-version
  3. ไฟล์ .nvmrc
  4. package.json engines.node
  5. เวอร์ชันเริ่มต้น

ลิงก์ที่เกี่ยวข้อง