Installing Multiple Versions of Node.js

Khi phát triển ứng dụng Nodejs, bạn có bao giờ đối mặt với trường hợp là phải cài đặt nhiều vesion của Node. Điều này xảy ra khi bạn có nhiều project và chúng yêu cầu nhiều version node khác nhau. Chúng ta phải cực nhọc cài bằng tay những version node và basing chúng tới những project. Điều này rất khó để control chúng. Hôm nay, mình sẽ giới thiệu một good tool giúp chúng ta dễ dàng làm việc với nhiều version node khác nhau cho những người chưa biết về công cụ tuyệt vời này.

Giới thiệu NVM

NVM viết tắt từ Node Version Manager. Nhưng đúng với tên gọi của nó, với nvm sẽ giúp chúng ta quản lí và chuyển đổi giữa các version node khác nhau một cách dễ dàng. Nó cung cấp command line nơi mà bạn có thể cài đặt những version khác nhau, thiết lập version mặc định và nhiều hơn thế nữa.

Node Version Manager - Simple bash script to manage multiple active node.js versions

OS Support

Hiện tại, NVM hỗ trợ trên môi trường Linux và macOS, nhưng với những ai sử dụng môi trường window thì không hỗ trợ. Đây là project thứ 2 có tên là nvm-windows sẽ giúp cho Windows users có thể quản lí dễ dàng môi trường node. Mặc dù tên project là nvm-windows nhưng nó không clone từ nvm và cũng không liên kết gì với nhau cả. Hay nói cách khác nó tách biệt với nhau. Tuy nhiên, chức năng sẽ giống nhau hoàn toàn, hỗ trợ đầy đủ các command cơ bản.

Cài Đặt

Windows

Với những ai sử dụng windows việc cài đặt sẽ rất dễ dàng, đầu tiên chắc chắn một điều là phải xóa hết các version node trên môi trường nếu không sẽ rất dễ bị conflict khi cài đặt. Đây là version ổn định mới nhất link

macOS/Linux

Xóa hết môi trường node, bạn không xóa cũng chẳng sao. Bạn nên xóa để chúng ta thống nhất khi sử dụng môi trường node. Hiện tại có rất nhiều cách để cài đặt NVM, đây là cách nhiều người sử dụng nhất (Linux, macOS). Để sử dụng nvm phải cài đặt thêm trình biên dịch. Với macOS, bạn có thể cài đặt Xcode bằng command line như sau:

xcode-select --install

Đối với Linux, bạn cần cài đặt package build-essential package

sudo apt-get update
sudo apt-get install build-essential

Bạn có thể cài đặt nvm qua cURL hay Wget Với cURL:

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

Hoặc với Wget:

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

Chúng ta chú ý ở đây chúng ta cài version (v0.33.8) nó sẽ thay đổi trong quá trình phát triển. Vậy vì cách tốt nhất là kiểm ta version trên trang chủ để tìm ra version mới nhất. Khi bạn cài đặt như trên, có sẽ chuyển data download về đến thư mục ~/.nvm và thay đổi cần thiết cho bash. Vì vậy bạn có thể sử dụng nvm command ở bất cứ đâu trong terminal của bạn. Việc cài đặt rất đơn giản, giờ sẽ qua chắc sử dụng chúng ra làm sao

Using nvm

Cài đặt nhiều version nodejs

Một trong những chức năng quan trọng đó là cài đặt nhiều version node khác nhau. Nvm đã cung cấp command nvm install. Chúng ta cài đặt version cụ thể mà chúng ta muốn. Ví dụ

nvm install 8.9.4

Hoặc

nvm install 8.9

Nvm sẽ cài đặt node version 8.9.X, với X sẽ là version cao nhất. Version 8.9.4 là version cao nhất tính đến thời điểm hiện tại mình viết bài viết này. Bạn có thể check danh sách version phù hợp

nvm ls-remote

Với nvm-windows:

nvm ls available

NPM

Khi cài đặt node, nvm sẽ cài đặt npm tương ứng với node version. Mỗi version node sẽ có version npm khác nhau, npm - v để version hiện tại. Những package đã cài đặt ở global sẽ không dùng chung vì tích tương thích giữa version node. Với nvm sẽ lưu ở thư mục ~/.nvm/versions/node/<version>/lib/node_modules. Đây là một điểm cộng rất lớn vì chúng ta không phải sudo để cài những global package. Cách khác, khi cài đặt version node mới, bạn có thể cài đặt lại global package với version cụ thể. Ví dụ:

nvm install v9.0.0 --reinstall-packages-from=8.9

Câu lệnh ở trên, nvm sẽ cài đặt version node 9.0.0 , kèm theo là version npm tương ứng và cài đặt lại npm package với version 8.9. Để cài version node mới nhất, bạn chạy lệnh như sau:

nvm install node

Để xóa version node đã cài đặt mà xem là không cần thiết:

nvm uninstall <version>

Chuyển đổi version node

Chúng ta đã cài đặt version node khác nhau. Bây giờ, chúng ta sẽ chuyển đổi giữa các version node khác nhau. Để chuyển đổi version, nvm đã cung cấp câu lệnh nvm use. Nó hoạt động khá giống với câu lệnh cài đặt.

// Chuyển đổi đến version 8.9.4
nvm use 8.9.4

// Chuyển đổi đến version 9.3.0
nvm use 9.3

// Chuyển đổi đến version mới nhất
nvm use node

// Chuyển đổi đến version **latest LTS Node.js**
nvm use node --lts

Khi chuyển đổi qua lại giữa các version khác nhau, nvm sẽ tạo node instance trong terminal và symlink đến node instance phù hợp, chúng ta không phải lo lắng quá nhiều về điều này.

Chúng ta có thể đặt những aliase cho tên version node mà chúng ta muốn:

nvm alias awesome-version 8.9.4

Với câu lệnh trên, tên awesome-version sẽ tương ứng với version 8.9.4. Chúng ta thoải mái đặt tên mà chúng ta coi là dễ nhớ nhất. Và chúng ta chuyển đổi version bằng cách gọi chính tên alias đó sẽ có version node tương ứng

nvm use awesome-version

Nếu bạn muốn xóa alias thì cũng vô cùng đơn giản:

nvm unalias awesome-version

Node io.js

Từ version node v4, tất cả các tính năng của io.js sẽ đặt merge với dự án node.js. Nhưng sẽ không còn phát triển nữa

Danh sách version node đã cài đặt

Khi bạn muốn check danh sẽ version node mà đã cài đặt, kiểm tra bằng câu lệnh sau:

nvm ls

Bạn để ý một chút sẽ thấy mũi tên màu xanh trỏ đến v8.9.4 điều này có nghĩa là version hiện tại bạn đang sử dụng là v8.9.4. Còn màu xanh lá cây và màu xanh biển, đây là danh sách alias

Xác định version cụ thể cho mỗi project

Với rbenv cho phép bạn xác định cụ thể phiên bản ruby cho mỗi project bằng cách đơn giản là viết version vào file .ruby-version trong thư mục project. Điều này cũng tương tự với nvm, bạn tạo file .nvmrc bên trong project , xác định version cụ thể rồi bạn truy cập đến thư mục và nvm use, nvm sẽ đọc nội dung của file .nvmrc và xác định version cho project.

Conclusion

Nvm là công cụ rất tuyệt vời cho Node.js developer. Chúng ta có thể cài đặt version khác nhau và chuyển đổi version tùy theo mục đích sử dụng. Chúng ta hãy cảm ơn Tim Caswell cũng là người tạo ra best tool này và Corey Butler là người tạo ra nvm cho window. Bạn thì sao ? Bạn có nên sử dụng nvm hay không ? Cảm nhận của bạn khi đã sử dụng nó ? Happy coding 😃 Nguồn: https://www.sitepoint.com/quick-tip-multiple-versions-node-nvm/