การจัดการเวอร์ชัน 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 use2. ความร่วมมือในทีม
เพิ่ม .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 use4. การพัฒนาหลายเวอร์ชัน
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การสลับอัตโนมัติไม่ทำงาน
- ยืนยันว่าเพิ่ม
--use-on-cdในการกำหนดค่าเชลล์ - ยืนยันว่ามีไฟล์เวอร์ชัน
- โหลดการกำหนดค่าเชลล์ใหม่
ลำดับความสำคัญของไฟล์เวอร์ชัน
fnm ค้นหาเวอร์ชันตามลำดับต่อไปนี้:
- เวอร์ชันที่ระบุในบรรทัดคำสั่ง
- ไฟล์
.node-version - ไฟล์
.nvmrc package.jsonengines.node- เวอร์ชันเริ่มต้น
ลิงก์ที่เกี่ยวข้อง
- ติดตั้ง Node.js - คู่มือการติดตั้ง
- อ้างอิงคำสั่ง - รายละเอียดคำสั่งทั้งหมด
- การจัดการดาวน์โหลด - ฟีเจอร์ที่เกี่ยวข้องกับการดาวน์โหลด