Codding Gun

จัดการกับ Version ของ Node ด้วย NVM

NVM ย่อมาจาก Node Version Manager คือเครื่องมือที่จะช่วยให้เราสามารถใช้งาน Node หลายๆ Version ได้ในเครื่องเดียว nvm เขียนขึ้นมาด้วยภาษา Go ดังนั้นจะเป็น Binary ที่มีขนาดเล็กและสามารถ run ได้ทั้ง Windows, Linux และ MacOS

แล้วทำไมต้องมีหลาย Version เนื่องจาก Node.js เวลานำ Project ที่สร้างขึ้นมาจาก Version ที่ต่างกันจะทำให้เกิด Error เกิดขึ้นได้ เช่นสร้าง Project ขึ้นมาจาก Version 16.16.0 แล้วไป run ใน Node.js version 20.12.2 ก็อาจทำให้เกิด Error เกิดขึ้นได้

Node Version Manager(nvm) จะช่วยให้เราติดตั้ง Version ของ Node.js ได้ตามที่เราต้องการ

ติดตั้ง NVM

ลองมาดูวิธีการติดต้ัง nvm ในแต่ละ OS ว่าจะมีิธีการติดตั้งยังไงบ้าง

ติดตั้ง NVM บน Linux

การติดตั้ง nvm บน Linux เราจะใช้คำสั่ง curl ในการ download และติดตั้ง nvm ดังนี้

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

หรือใช้ wget ในการ Downlaod และติดตั้ง nvm ได้ด้วยคำสั่ง

$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

ติดตั้ง NVM บน MacOs

บน MacOS version ใหม่เราไม่ได้ใช้ bash shell ดังนั้นการติดตั้งด้วย curl หรือ wget แบบ linux จะใช้ไม่ได้ แนะนำให้เราติดตั้งผ่าน brew จะง่ายกว่า โดยเราจะมีขั้นตอนการติดตั้ง nvm ดังนี้

  1. ติดต้ัง nvm ลงในเครื่องด้วยคำสั่ง

    $ brew install nvm
    
  2. เราต้องสร้าง folder .nvm ไว้ใน user directory ของเราด้วยคำสั่ง

    $ mkdir ~/.nvm
    
  3. เปิดไฟล์ .zshrc เพื่อเพิ่ม Environment Variables ด้วยคำสั่ง

    $ nano ~/.zshrc
    

    หลังจากนั้นเพิ่มคำสั่ง export นี้เข้าไป

    export NVM_DIR="$HOME/.nvm"
        [ -s "$HOMEBREW_PREFIX/opt/nvm/nvm.sh" ] && \. "$HOMEBREW_PREFIX/opt/nvm/nvm.sh"
        [ -s "$HOMEBREW_PREFIX/opt/nvm/etc/bash_completion.d/nvm" ] && \. "$HOMEBREW_PREFIX/opt/nvm/etc/bash_completion.d/nvm"
    
  4. หลังจากนั้น run คำสั่งนี้ เพื่อ run nvm.sh

    $ source $(brew --prefix nvm)/nvm.sh
    

    เราจะใช้คำสั่ง brew --prefix nvm เพื่อระบุ path ของ nvm

  5. เมื่อเราใช้งานไปเรื่อยๆแล้วต้องการ update nvm เราสามารถ update nvm ได้ด้วยคำสั่ง

    $ brew upgrade nvm
    

ติดตั้ง NVM บน Windows

nvm นั้นจะมีการติดตั้งแค่ Linux และ MacOs เท่านั้น ดังนั้นเราต้องเข้าไปใน repository ที่ชื่อว่า nvm-windows หลังจากนั้นเข้าไป Download ตัว Installer ของ NVM ได้ที่หน้า Release ของ nvm-windows แล้วหลังจากนั้นก็ติดตั้งแบบปกติได้เลย

คำสั่งของ NVM

หลังจากที่เราติดตั้ง nvm กันได้แล้วเราลองมาดูวิธีการใช้งาน nvm กัน

NVM Help

เริ่มจากคำสั่งแรก ถ้าคิดอะไรไม่ออกก็เรียก Help ขึ้นมาใช้งาน

$ nvm --help

NVM List

เราสามารถเรียก list version ของ Node.js ในเครื่องออกมาดูได้ด้วยคำสั่ง

$ nvm list

NVM Install

ติดตั้ง Node.js version ที่เราต้องการได้ด้วยคำสั่ง

# ติดตั้ง Version ล่าสุด
$ nvm install node 

# เลือก Version ที่ต้องการได้
$ nvm install 20.12.2

# เลือกติดตั้ง Version ล่าสุดที่เป็น Long-Term Supported(LTS)
$ nvm install --lts

Node.js จะมี Version ที่ Release ออกมาเป็น Stable และ Long-Term Supported(LTS) ซึ่งโดยส่วนตัวแนะนำให้ติดตั้ง LTS version จะมีปัญหาน้อยกว่า Stable อาจใหม่เกินไป

NVM LS-Remote

ถ้ายังไม่รู้ว่าจะติดตั้ง Version ไหนดีให้ list version ของ Node.js ออกมาด้วยคำสั่ง

$ nvm ls-remote

NVM Use

หลังจากที่เรามี Node.js ในเครื่องแล้ว เราก็สามารถเลือก Version ของ Node.js ที่เราต้องการใช้งานด้วยคำสั่ง

# เลือกใช้ Version ล่าสุด
$ nvm use node

# เลือกใช้แบบระบุ version
$ nvm use 20.12.2

# เลือกใช้ LTS Version ล่าสุด
$ nvm use --lts

NVM Which

คุณสามารถเข้าไปตามหาไฟล์ของ Node.js version ที่เราต้องการได้ด้วยคำสั่ง

$ nvm which 20.12.2

NVM Alias

เราสามารถกำหนดให้ Node.js version ไหนเป็น default ได้ด้วยคำสั่ง

# เราจะใช้ node Version ล่าสุดเป็นตัว default
$ nvm alias default node

# เราจะใช้ node Version 20.12.2 เป็นตัว default
$ nvm alias default 20.12.2

NVM Run and Exec

เราสามารถทดลอง run Node.js ใน Version ต่างๆโดยที่ไม่ต้อง Set เป็น deafult ได้ด้วยคำสั่ง

# app.js จะถูก run ด้วย node version 20.12.2
$ nvm run 20.12.2 app.js 
# หรือ
$ nvm exec 20.12.2 node app.js

run และ exec จะต่างกันตรงที่ run จะเรียกใช้แบบสั้นๆ เหมาะกับการใช้ run Node.js ที่ไม่ได้ใส่ parameter อื่นๆเข้าไป แต่ exec จะสามารถใส่ parameters อื่นๆต่อท้ายได้

Use System Version

ถ้าในเครื่องเรามี Node.js ที่ Download มาติดตั้งเองโดยไม่ใช้ nvm เราจะเรียกว่า System Version ซึ่งเราสามารถสลับกลับมาใช้ System Version ได้ด้วยคำสั่ง

# เลือกใช้ Node.js ที่ติดตั้งอยู่บนเครื่องโดยไม่ได้ติดตั้งผ่าน nvm
$ nvm use system
# ทดสอบ run Javascript โดยใช้ Node.js ที่ติดตั้งอยู่บนเครื่อง
$ nvm run system --version

NVM Uninstall

เมื่อเราไม่ต้องการ Node.js Version ไหนให้ทำการ Uninstall ออกด้วยคำสั่ง

# Uninstall Version ล่าสุด
$ nvm uninstall node 

# Uninstall Version ที่เราไม่ต้องการ
$ nvm uninstall 20.12.2

# เลือก Uninstall LTS Version
$ nvm uninstall --lts
Phanupong Permpimol
Follow me