Skip to content

การกำหนดค่า nvmrc

บทนำ

เมื่อพัฒนาโปรเจกต์หลายโปรเจกต์ แต่ละโปรเจกต์อาจต้องการเวอร์ชัน Node.js ที่แตกต่างกัน ในกรณีเช่นนี้ เราต้องระบุเวอร์ชัน Node.js สำหรับแต่ละโปรเจกต์โดยรันคำสั่ง nvm install และ nvm use ในเทอร์มินัลเพื่อติดตั้งและสลับเวอร์ชัน

อย่างไรก็ตาม การรันคำสั่งในเทอร์มินัลด้วยตนเองทุกครั้งกลายเป็นเรื่องยุ่งยาก โดยเฉพาะเมื่อจำนวนโปรเจกต์เพิ่มขึ้น ง่ายต่อการลืมสลับเวอร์ชันหรือสลับไปยังเวอร์ชันที่ผิด ซึ่งอาจทำให้โปรเจกต์ไม่สามารถเริ่มต้นได้หรือพบข้อผิดพลาดระหว่างรัน

นี่คือที่ที่เราต้องการวิธีการจัดการเวอร์ชัน Node.js และสลับระหว่างพวกมันโดยอัตโนมัติ และนี่คือที่ที่ .nvmrc เข้ามามีบทบาท

.nvmrc คืออะไร?

จากคำอธิบายข้างต้น คุณสามารถเข้าใจได้ว่าไฟล์ .nvmrc ใช้เพื่อจัดการเวอร์ชัน Node.js สำหรับโปรเจกต์ของเรา ไฟล์นี้ง่ายมาก: มันมีเฉพาะข้อความที่แสดงเวอร์ชัน Node.js ที่ nvm สามารถจดจำได้ เช่น v18.12.0

วิธีใช้ไฟล์ .nvmrc?

คุณสามารถสร้างไฟล์ .nvmrc พร้อมเนื้อหาที่เป็นหมายเลขเวอร์ชัน Node.js หรือข้อความอื่นๆ ที่ nvm เข้าใจ สำหรับรายละเอียด คุณสามารถพิมพ์ nvm --help ในเทอร์มินัล

ด้วยไฟล์ .nvmrc เมื่อคุณรันคำสั่งเช่น nvm use, nvm install, nvm exec, nvm run, และ nvm which ในเทอร์มินัลโดยไม่ระบุเวอร์ชัน เวอร์ชันที่ระบุในไฟล์ .nvmrc จะถูกใช้

การสร้างไฟล์ .nvmrc

ตัวอย่างเช่น ในไดเรกทอรีปัจจุบัน เพื่อให้ nvm ระบุการเผยแพร่ล่าสุดของเวอร์ชัน 18.12 เวอร์ชัน LTS ล่าสุด หรือเวอร์ชัน Node.js ล่าสุด คุณสามารถใช้คำสั่ง echo เพื่อสร้างไฟล์ .nvmrc:

bash
$ echo "18.12" > .nvmrc
# ตั้งค่าเป็นเวอร์ชัน LTS ล่าสุด
$ echo "lts/*" > .nvmrc
# ตั้งค่าเป็นเวอร์ชันล่าสุด
$ echo "node" > .nvmrc

คำสั่งเช่น nvm use จะสำรวจโครงสร้างไดเรกทอรีขึ้นไปจากไดเรกทอรีปัจจุบันเพื่อค้นหาไฟล์ .nvmrc ซึ่งหมายความว่าการรันคำสั่งเช่น nvm use ในไดเรกทอรีย่อยใดๆ ของไดเรกทอรีที่มีไฟล์ .nvmrc จะยังคงใช้ไฟล์ .nvmrc นั้น

ไฟล์ .nvmrc ต้องมี <version> ที่สอดคล้องกับที่แสดงใน nvm --help ตามด้วยการขึ้นบรรทัดใหม่ ไม่อนุญาตให้มีช่องว่างต่อท้าย และต้องมีการขึ้นบรรทัดใหม่ต่อท้าย

ดังที่แสดงในภาพด้านล่าง ไม่มีช่องว่างหลังจาก v14.21.3 เพียงแค่การขึ้นบรรทัดใหม่

nvmrc

การรวมเข้ากับเทอร์มินัลเชลล์อย่างลึกซึ้ง

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

หากคุณต้องการโซลูชันที่เบากว่า คุณสามารถใช้วิธีด้านล่าง

สลับเวอร์ชัน Node.js โดยอัตโนมัติในเทอร์มินัล zsh ตามไฟล์ .nvmrc

หลังจากเพิ่มโค้ดต่อไปนี้ใน $HOME/.zshrc ของคุณ nvm use จะถูกเรียกโดยอัตโนมัติทุกครั้งที่คุณเข้าสู่ไดเรกทอรีที่มีไฟล์ .nvmrc สตริงในไฟล์ .nvmrc บอก nvm ว่าเวอร์ชัน Node.js ใดที่ควรใช้

bash
# เปิดไดเรกทอรี home และแก้ไขไฟล์ .zshrc
$ cd
$ vi .zshrc

นี่คือโค้ดที่ต้องเขียนไปยัง .zshrc:

bash
# คัดลอกส่วนโค้ดนี้ไปยังไฟล์ .zshrc
# วางสิ่งนี้หลังจากเริ่มต้น nvm!
autoload -U add-zsh-hook
load-nvmrc() {
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
      nvm use
    fi
  elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

หลังจากแก้ไขไฟล์ .zshrc แล้ว ให้รัน source .zshrc เพื่อให้คำสั่งมีผล:

bash
$ source ~/.zshrc

ในโปรเจกต์ที่มีไฟล์ .nvmrc เมื่อคุณเปิดเทอร์มินัลแบบรวมใน vscode คุณจะพบว่า nvm use ถูกรันโดยอัตโนมัติ พร้อมผลลัพธ์ที่สอดคล้องกันในบรรทัดคำสั่ง

nvmrc

NVM - Node Version Manager สำหรับ Windows, Linux และ macOS