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