การกำหนดค่า 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 เพียงแค่การขึ้นบรรทัดใหม่

การรวมเข้ากับเทอร์มินัลเชลล์อย่างลึกซึ้ง
คุณสามารถใช้ 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 ถูกรันโดยอัตโนมัติ พร้อมผลลัพธ์ที่สอดคล้องกันในบรรทัดคำสั่ง
