TopGit
Đánh giá repo GitHub

nvm: Trình Quản Lý Phiên Bản Node.js

nvm-sh/nvm
NTopGit review image for nvm-sh/nvm
Review by Topgit.dev for nvm-sh/nvm, with GitHub repository stats and README context.
Nhận định nhanh

Node Version Manager (nvm) là một shell script dùng để cài đặt và chuyển đổi giữa nhiều phiên bản Node.js theo từng shell, chứ không phải một gói cài đặt toàn hệ thống. Hãy dùng nếu bạn làm việc trên bash, zsh, hay shell POSIX khác trên Linux, macOS, hoặc WSL2 và muốn kiểm soát phiên bản theo từng dự án mà không cần sudo; bỏ qua nếu bạn dùng Windows gốc không có WSL hoặc dùng Fish shell, vì README nói rõ cả hai đều không được hỗ trợ.

Sao
★ 94.5k
Fork
⑂ 10.4k
Ngôn ngữ
Shell
Giấy phép
MIT
Chủ đề
Cập nhật
Jul 2026
Trang chủ
GitHub

Node Version Manager (nvm) là gì?

Node Version Manager (nvm) là một shell script tương thích POSIX — không phải file thực thi biên dịch sẵn — mà bạn source vào bash, zsh, ksh, dash, hay shell POSIX khác để cài đặt và chuyển đổi giữa các phiên bản Node.js. Nó chạy theo từng người dùng và từng shell: tự clone vào ~/.nvm (hoặc $XDG_CONFIG_HOME của bạn), rồi load như một shell function, nên các lệnh như nvm use chỉ đổi node đang active trong đúng phiên shell đó.

Khả năng chính của nvm

  • Chuyển phiên bản chỉ với một dòng lệnh: nvm install 24, nvm use 22, và nvm use 20 mỗi lệnh đổi node trên $PATH cho phiên shell đó, đúng như ví dụ trong README.
  • Các alias dựng sẵn ngoài số phiên bản thô — node (mới nhất), iojs (io.js mới nhất), stable/unstable (alias cũ từ trước bản 1.0), và current (phiên bản đang active, không bị ảnh hưởng bởi .nvmrc).
  • Nhắm tới dòng LTS bằng lts/* cho bản LTS mới nhất hoặc lts/argon cho một dòng release theo tên mã cụ thể, dùng được xuyên suốt install, uninstall, use, exec, run, và ls-remote.
  • Flag --reinstall-packages-from=<version> cài lại các package npm global lên phiên bản Node vừa cài mới, mà không âm thầm nâng cấp bản thân npm.
  • nvm exec và nvm which cho phép chạy một lệnh với một phiên bản Node cụ thể trong subshell, hoặc chỉ in ra đường dẫn tới binary của phiên bản đó, mà không cần đổi cả shell.
  • Install script chấp nhận override qua NVM_SOURCE, NVM_DIR, PROFILE, và NODE_VERSION, cùng flag --no-use để cài mà không kích hoạt phiên bản nào ngay.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Cài đặt và cập nhật nvm

Để cài hoặc cập nhật nvm, README hướng dẫn chạy install script qua lệnh curl hoặc wget một dòng. Script này clone repository nvm vào ~/.nvm (hoặc $XDG_CONFIG_HOME/nvm nếu biến đó tồn tại) và cố gắng thêm các dòng source vào đúng file profile — ~/.bashrc, ~/.bash_profile, ~/.zshrc, hoặc ~/.profile — nếu nó chỉnh nhầm file, đặt biến $PROFILE trỏ tới file đúng rồi chạy lại. Bạn có thể tuỳ biến nguồn cài, thư mục, profile, và phiên bản qua NVM_SOURCE, NVM_DIR, PROFILE, NODE_VERSION, thêm --no-use để cài mà chưa activate phiên bản nào, hoặc đặt PROFILE=/dev/null để install script không đụng vào shell config. Cài thủ công qua git cũng được, nhưng README yêu cầu git bản tối thiểu v1.7.10 để clone và checkout tag. Xác minh cài đặt bằng `command -v nvm` chứ không phải `which nvm`, vì nvm là một shell function được source chứ không phải binary thực thi. README cũng mô tả một cách cài trong Docker, source nvm qua biến BASH_ENV cho container non-interactive.

Quản lý các phiên bản Node.js với nvm

Cài một phiên bản cụ thể bằng `nvm install <version>`, hoặc dùng alias node cho bản mới nhất — phiên bản cài đầu tiên tự trở thành default cho các shell mới. `nvm use <version>` đổi phiên bản active trong shell hiện tại, `nvm run node --version` chạy node trực tiếp, còn `nvm exec <version> <command>` chạy một lệnh bất kỳ trong subshell với phiên bản chỉ định, không đổi default của shell. `nvm which <version>` in ra đường dẫn tới binary đã cài của phiên bản đó. `nvm alias <name> <version>` đặt alias riêng (không được chứa dấu cách hay dấu gạch chéo), và `nvm ls-remote` liệt kê các phiên bản có thể cài. Các cờ LTS (--lts, --lts=argon, 'lts/*', lts/argon) dùng được với install, uninstall, use, exec, run, và ls-remote. Để chuyển sang bản LTS mới nhất mà vẫn giữ các package đang cài, README đưa ra lệnh `nvm install --reinstall-packages-from=current 'lts/*'`.

Điểm mạnh

  • Chạy được trên nhiều shell POSIX — bash, zsh, ksh, dash — và trên macOS, Linux, Windows WSL2, đúng theo danh sách nền tảng trong README.
  • Các alias dựng sẵn (node, current, lts/*, lts/argon) giúp script và file .nvmrc tham chiếu phiên bản mà không cần đoán số release mới nhất hôm nay.
  • --reinstall-packages-from migrate package npm global sang phiên bản Node mới chỉ với một lệnh, cố tình không đụng tới bản thân npm.
  • Không cần sudo để cài package npm global một khi nvm quản lý Node của bạn — package nằm dưới ~/.nvm/$NVM_DIR thay vì đường dẫn hệ thống.
  • Install script có thể script hoá: biến NVM_SOURCE, NVM_DIR, PROFILE, NODE_VERSION, cùng --no-use và PROFILE=/dev/null cho các setup tự động hay CI.
  • Giấy phép MIT, kèm cách dùng Docker + BASH_ENV cho build CI/CD non-interactive được README ghi lại.

Những lưu ý quan trọng và môi trường chưa được hỗ trợ

  • Cài qua Homebrew không được hỗ trợ — README yêu cầu `brew uninstall` bản đó rồi cài lại bằng install script chính thức nếu gặp lỗi.
  • Fish shell không được hỗ trợ native — README liệt kê các wrapper của bên thứ ba như nvm.fish và fish-nvm thay thế.
  • Windows không phải nền tảng gốc — nvm chạy qua WSL2, Git Bash (MSYS), hoặc Cygwin, không chạy trực tiếp trên PowerShell hay cmd.exe.
  • Cài qua git cần bản git v1.7.10 trở lên; README ghi rằng bản git cũ hơn gặp lỗi khi clone qua https và không clone được tag.
  • Build Node từ source (khi nền tảng của bạn không có sẵn binary dựng sẵn) cần trình biên dịch C++ — Xcode command line tools trên macOS, hoặc build-essential và libssl-dev trên Debian/Ubuntu.
  • Các file alias LTS mà nvm tự tạo dưới $NVM_DIR/alias/lts được quản lý tự động; README cảnh báo không nên tự sửa tay vì nvm có thể ghi đè và không hỗ trợ lỗi phát sinh từ việc đó.

Lựa chọn thay thế cho từng nền tảng và shell cụ thể

nvm-windows — một trình quản lý phiên bản riêng, chạy native trên Windows; khác với nvm, không cần WSL, Git Bash, hay Cygwin (theo chính README của nvm, liệt kê như một lựa chọn thay thế mà nvm không hỗ trợ).nvs — công cụ chuyển đổi phiên bản Node đa nền tảng mà README của nvm gợi ý cho người dùng Windows, dù bản thân nvm không maintain nó.nodist — một trình quản lý phiên bản Node khác tập trung cho Windows, được README liệt kê cùng nvm-windows và nvs cho những người dùng mà nvm không hỗ trợ native.nvm.fish — bản viết lại native cho Fish shell, vì nvm không hỗ trợ Fish, theo chính README, vốn có link tới công cụ này như một lựa chọn thay thế.fish-nvm — một wrapper quanh nvm cho Fish, trì hoãn việc source nvm tới khi thực sự dùng, theo README của nvm.

Câu hỏi thường gặp về nvm

nvm có chạy được trên Windows không?

Node Version Manager (nvm) không nhắm tới Windows native — README nói nó chạy qua WSL2, Git Bash (MSYS), hoặc Cygwin. Nếu cần công cụ native cho Windows, README chỉ tới nvm-windows, nodist, hoặc nvs.

nvm có dùng được với Fish shell không?

Node Version Manager (nvm) không hỗ trợ Fish, theo chính README của nó. README liệt kê các lựa chọn thay thế dựng riêng cho Fish, gồm nvm.fish, fish-nvm, và bass.

nvm có tương thích với bản cài qua Homebrew không?

Cài nvm qua Homebrew không được hỗ trợ. README yêu cầu ai gặp lỗi với bản cài qua Homebrew hãy `brew uninstall` nó rồi cài lại bằng install script chính thức.

Làm sao để cài các bản Node.js LTS bằng nvm?

Chạy `nvm install --lts` để lấy bản LTS mới nhất, hoặc nhắm tới một dòng cụ thể bằng `nvm install --lts=argon` hay `nvm install lts/argon`, theo README.

Tôi có cần sudo để cài package npm global khi dùng nvm không?

Node Version Manager (nvm) giúp bạn không cần sudo khi cài package npm global, vì package nằm dưới thư mục home của bạn thay vì đường dẫn hệ thống — chỉ cần đảm bảo file ~/.npmrc không đặt prefix, vì README nói điều đó không tương thích với nvm.

Yêu cầu về phiên bản Git khi dùng nvm là gì?

Node Version Manager (nvm) cần git bản v1.7.10 trở lên để cài đặt và cập nhật qua git; README ghi rằng bản git cũ hơn gặp lỗi khi clone qua https và không clone được tag.

Vấn đề nvm giải quyết

Các dự án khác nhau trên cùng một máy thường cần các bản Node.js major khác nhau — dự án này còn giữ một dòng LTS, dự án kia đang thử bản mới nhất — nhưng một bản cài Node.js toàn hệ thống (qua apt, trình cài đặt Windows, hay Homebrew) chỉ cho bạn một phiên bản tại một thời điểm, và đổi phiên bản đó thường cần sudo cùng việc cài lại thủ công. nvm giải quyết việc này bằng cách cài Node dưới thư mục home của từng người dùng và load một phiên bản cụ thể vào mỗi phiên shell, nên `node -v` có thể trả về kết quả khác nhau ở hai tab terminal mà không đụng tới trình quản lý gói của hệ điều hành.

Trường hợp sử dụng tốt nhất

  • Giữ song song nhiều bản Node major trên cùng một máy dev và chuyển đổi theo từng tab terminal bằng nvm use <version>, đúng như ví dụ trong README.
  • Build Docker non-interactive cần pin một phiên bản Node cụ thể — README có mô tả cách source nvm qua BASH_ENV vì shell non-interactive không đọc các file profile.
  • Nâng một dự án lên bản Node mới trong khi vẫn giữ lại các package npm global đã cài, qua --reinstall-packages-from.
  • Tham chiếu tới dòng LTS một cách chung chung (lts/*, lts/argon) trong script hoặc file .nvmrc thay vì hard-code một số phiên bản rồi lỗi thời.

Nên dùng — và nên bỏ qua khi nào

Hãy dùng nvm nếu bạn là developer trên macOS, Linux, hoặc WSL2, làm việc với nhiều dự án pin các bản Node major khác nhau, và muốn đổi phiên bản theo từng terminal mà không cần cài lại toàn hệ thống hay dùng sudo. Bỏ qua nếu bạn dùng Windows gốc không có WSL — hãy dùng nvm-windows, nodist, hoặc nvs thay thế — hoặc nếu bạn dùng Fish shell, nơi README hướng bạn tới nvm.fish hay fish-nvm; cũng nên bỏ qua bản cài qua Homebrew, vì README nói đường này không được hỗ trợ.

Repo liên quan

Nguồn & ghi công

Thông tin và trích dẫn lấy từ repository GitHub nvm-sh/nvm và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 12 thg 8, 2026Đánh giá bởi Henry
Về TopGit

Chưa chắc nvm có hợp với bạn?

Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về nvm.

GitHub