Skip to content

Cấu hình nvmrc

Giới thiệu

Khi phát triển nhiều dự án, mỗi dự án có thể yêu cầu một phiên bản Node.js khác nhau. Trong những trường hợp như vậy, chúng ta cần chỉ định phiên bản Node.js cho mỗi dự án bằng cách thực thi các lệnh nvm installnvm use trong terminal để cài đặt và chuyển đổi phiên bản.

Tuy nhiên, việc thực thi lệnh thủ công trong terminal mỗi lần trở nên rườm rà, đặc biệt là khi số lượng dự án tăng lên. Dễ quên chuyển đổi phiên bản hoặc chuyển đổi sang phiên bản sai, điều này có thể khiến dự án không khởi động được hoặc gặp lỗi trong quá trình chạy.

Đây là lúc chúng ta cần một phương pháp để quản lý phiên bản Node.js và tự động chuyển đổi giữa chúng, và đây là nơi .nvmrc phát huy tác dụng.

.nvmrc là gì?

Từ giải thích ở trên, bạn có thể hiểu rằng tệp .nvmrc được sử dụng để quản lý phiên bản Node.js cho dự án của chúng ta. Tệp này rất đơn giản: nó chỉ chứa văn bản đại diện cho phiên bản Node.js mà nvm có thể nhận ra, chẳng hạn như v18.12.0.

Làm thế nào để sử dụng tệp .nvmrc?

Bạn có thể tạo tệp .nvmrc với nội dung là số phiên bản Node.js hoặc văn bản khác mà nvm có thể hiểu. Để biết chi tiết, bạn có thể gõ nvm --help trong terminal.

Với tệp .nvmrc, khi bạn thực thi các lệnh như nvm use, nvm install, nvm exec, nvm runnvm which trong terminal mà không chỉ định phiên bản, phiên bản được chỉ định trong tệp .nvmrc sẽ được sử dụng.

Tạo tệp .nvmrc

Ví dụ, trong thư mục hiện tại, để nvm chỉ định bản phát hành mới nhất của phiên bản 18.12, phiên bản LTS mới nhất hoặc phiên bản Node.js mới nhất, bạn có thể sử dụng lệnh echo để tạo tệp .nvmrc:

bash
$ echo "18.12" > .nvmrc
# Đặt thành phiên bản LTS mới nhất
$ echo "lts/*" > .nvmrc
# Đặt thành phiên bản mới nhất
$ echo "node" > .nvmrc

Các lệnh như nvm use sẽ duyệt cấu trúc thư mục lên trên từ thư mục hiện tại để tìm tệp .nvmrc. Điều này có nghĩa là chạy các lệnh như nvm use trong bất kỳ thư mục con nào của thư mục có tệp .nvmrc vẫn sẽ sử dụng tệp .nvmrc đó.

Tệp .nvmrc phải chứa <version> tuân theo những gì được liệt kê trong nvm --help, theo sau là dòng mới. Không được phép có khoảng trắng ở cuối và cần có dòng mới ở cuối.

Như thể hiện trong hình ảnh bên dưới, không có khoảng trắng sau v14.21.3, chỉ có ngắt dòng.

nvmrc

Tích hợp sâu với shell terminal

Bạn có thể sử dụng avn để tích hợp sâu với shell của mình và tự động gọi nvm khi thay đổi thư mục.

Nếu bạn muốn một giải pháp nhẹ hơn, bạn có thể sử dụng phương pháp bên dưới.

Tự động chuyển đổi phiên bản Node.js trong terminal zsh dựa trên tệp .nvmrc

Sau khi thêm mã sau vào $HOME/.zshrc của bạn, nvm use sẽ tự động được gọi bất cứ khi nào bạn vào thư mục chứa tệp .nvmrc. Chuỗi trong tệp .nvmrc cho nvm biết phiên bản Node.js nào sẽ sử dụng.

bash
# Mở thư mục home và chỉnh sửa tệp .zshrc
$ cd
$ vi .zshrc

Đây là mã cần được ghi vào .zshrc:

bash
# Sao chép đoạn mã này vào tệp .zshrc
# đặt đoạn mã này sau khi khởi tạo 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

Sau khi chỉnh sửa tệp .zshrc, thực thi source .zshrc để lệnh có hiệu lực:

bash
$ source ~/.zshrc

Trong các dự án có tệp .nvmrc, khi bạn mở terminal tích hợp trong vscode, bạn sẽ thấy rằng nvm use được tự động thực thi, với đầu ra tương ứng trong dòng lệnh.

nvmrc

NVM - Trình quản lý phiên bản Node cho Windows, Linux và macOS